讨论 / 请教高手此题为何补AC??????????
sunbiao 2011-08-16 17:21:00
点我顶贴 收藏 删除
Xeost[5]

得分: 10分

提交日期: 2011-8-9 18:52:00

有效耗时: 47毫秒

测试结果1: 测试结果错误.错误结果为:0

50

正确结果应为:0

7

测试结果2: 测试结果错误.错误结果为:0

4749

正确结果应为:0

53

测试结果3: 测试结果错误.错误结果为:0

116921

正确结果应为:0

269

测试结果4: 通过本测试点|有效耗时47ms

测试结果5: 测试结果错误.错误结果为:1

9

正确结果应为:1

6

测试结果6: 测试结果错误.错误结果为:1

15

正确结果应为:1

9

测试结果7: 测试结果错误.错误结果为:1

40

正确结果应为:1

21

测试结果8: 测试结果错误.错误结果为:1

85

正确结果应为:1

28

测试结果9: 测试结果错误.错误结果为:1

190

正确结果应为:1

41

测试结果10: 测试结果错误.错误结果为:1

490

正确结果应为:1

86

提交代码:

#include<stdio.h>

int B[501][501]={};

long int A[501][501]={};

int n,m,k,sum;

void spread(int x,int y)

{

sum++; /通水总数

if(x==1) k++;

B[x][y]=0;第i,j城染色;

if(x!=1&&B[x-1][y]&&A[x][y]>A[x-1][y])

spread(x-1,y);

if(x!=m&&B[x+1][y]&&A[x][y]>A[x+1][y])

spread(x+1,y);

if(y!=1&&B[x][y-1]&&A[x][y]>A[x][y-1])

spread(x,y-1);

if(y!=n&&B[x][y+1]&&A[x][y]>A[x][y+1])

spread(x,y+1);

}

main()

{

int i,j,so,r;long int max;

scanf("%d%d",&m,&n);

for(i=1;i<=m;i++)

for(j=1;j<=n;j++)

{

scanf("%d",&A[i][j]);

B[i][j]=1; 第i,j城未染色;

}

k=sum=so=0;

while(k<n&&sum<n*m)

{

max=0;

for(i=1;i<=n;i++)水边最高城市

if(B[1][i]&&A[1][i]>max)

{

max=A[1][i];

r=i;

}

spread(1,r);

so++;徐水站个数

}

if(sum==n*m)

printf("%d\n%d",1,so);

else

printf("%d\n%d",0,m*n-sum);

getchar();

getchar();

}

#1 sunbiao@2011-08-16 17:20:00
回复 删除
自己想
#2 sunbiao@2011-08-16 17:21:00
回复 删除
[quote][url=/Discuss_Show.asp?DID=9106]原帖[/url]由 [i]sunbiao[/i] 于 2011-8-9 19:34:00 发表

Xeost[5]

得分: 10分

提交日期: 2011-8-9 18:52:00

有效耗时: 47毫秒

测试结果1: 测试结果错误.错误结果为:0

50

正确结果应为:0

7

测试结果2: 测试结果错误.错误结果为:0

4749

正确结果应为:0

53

测试结果3: 测试结果错误.错误结果为:0

116921

正确结果应为:0

269

测试结果4: 通过本测试点|有效耗时47ms

测试结果5: 测试结果错误.错误结果为:1

9

正确结果应为:1

6

测试结果6: 测试结果错误.错误结果为:1

15

正确结果应为:1

9

测试结果7: 测试结果错误.错误结果为:1

40

正确结果应为:1

21

测试结果8: 测试结果错误.错误结果为:1

85

正确结果应为:1

28

测试结果9: 测试结果错误.错误结果为:1

190

正确结果应为:1

41

测试结果10: 测试结果错误.错误结果为:1

490

正确结果应为:1

86

提交代码:

#include<stdio.h>

int B[501][501]={};

long int A[501][501]={};

int n,m,k,sum;

void spread(int x,int y)

{

sum++; /通水总数

if(x==1) k++;

B[x][y]=0;第i,j城染色;

if(x!=1&&B[x-1][y]&&A[x][y]>A[x-1][y])

spread(x-1,y);

if(x!=m&&B[x+1][y]&&A[x][y]>A[x+1][y])

spread(x+1,y);

if(y!=1&&B[x][y-1]&&A[x][y]>A[x][y-1])

spread(x,y-1);

if(y!=n&&B[x][y+1]&&A[x][y]>A[x][y+1])

spread(x,y+1);

}

main()

{

int i,j,so,r;long int max;

scanf("%d%d",&m,&n);

for(i=1;i<=m;i++)

for(j=1;j<=n;j++)

{

scanf("%d",&A[i][j]);

B[i][j]=1; 第i,j城未染色;

}

k=sum=so=0;

while(k<n&&sum<n*m)

{

max=0;

for(i=1;i<=n;i++)水边最高城市

if(B[1][i]&&A[1][i]>max)

{

max=A[1][i];

r=i;

}

spread(1,r);

so++;徐水站个数

}

if(sum==n*m)

printf("%d\n%d",1,so);

else

printf("%d\n%d",0,m*n-sum);

getchar();

getchar();

}

[/quote]

查看更多回复
提交回复