讨论 / 为什么会全错?
ZhaoYJ 2012-03-18 23:33:00
点我顶贴 收藏 删除
program saolei;

var a:array[0..101,0..101]of integer;

b:array[1..100,1..100]of char;

d:array[1..3]of integer;

v:char;

z,k,n,m,i,j,q,p:integer;

begin

d[1]:=-1;

d[2]:=0;

d[3]:=1;

z:=1;

repeat

fillchar(a,sizeof(a),0);

readln(n,m);

if n<>0 then begin

for i:=1 to n do

begin

for j:=1 to m do begin

read(b[i,j]);

if b[i,j]=’*’ then for q:=1 to 3 do

for p:=1 to 3 do

inc(a[i+d[q],j+d[p]]);

end;

readln;

end;

writeln(’Field #’,z,’:’);

inc(z);

for i:=1 to n do

begin

for j:=1 to m do

if b[i,j]=’*’ then write(’*’)

else write(a[i,j]);

writeln;

end;

if n<>0 then writeln;

end;

until n=0;

end.

答案除了最后一组超出范围外,都是一致的。

请问这个程序会有什么问题?

#1 杨光@2009-08-14 02:18:00
回复 删除
之前数据有问题,现在已解决.

我以前提交20多次不过,今天已经过了.

#2 杨光@2009-08-14 02:19:00
回复 删除
超范围也是测试数据的问题
#3 Mato的临时帐号(2010)@2009-08-14 05:09:00
回复 删除
因为输出格式问题,U11202交了5次才过,降了水题的AC率,向大家道歉!
#4 飞雪天涯@2009-08-16 08:23:00
回复 删除
人品低……
#5 飞雪天涯@2009-08-16 18:01:00
回复 删除
明明跟答案一样,WA0:

/*

查看题目 Show Problem

题目:扫雷

问题编号:484 [提交该题] [讨论该问题] [有关讨论] [Who AC] [相关题解] [最优解]

My Flag:Unsubmited

题目类型

字符串处理

描述

你玩过扫雷游戏吗?这个有趣的小游戏来自于某个被人们遗忘的操作系统.游戏的目标是找出一个n×m矩阵内的所有地雷.在本题中,你需要为每个单元格统计出他周围的地雷个数.每个单元格最多有8个相邻的单元格.下图的4×4矩阵中有两个地雷,用’*’表示.计算结果为右边的矩阵:

输入格式

输入将包含若干个矩阵,对于每一个矩阵,第一行包含两个数字n和m(0<n,m<=100),分别代表这个剧真的行数和列数.接下来的n行每行包含m个字符,即该矩阵.安全区域用’.’表示,有地雷的区域用’*’表示.当n=m=0时,输入文件结束.

输出格式

对于第x个矩阵,首先在单独的一行里打印序号:’Field #x:’,接下来的n行中,读入的’.’应被该位置周围的地雷数所代替.输出的每两个矩阵必须用一个空行隔开

样例输入

4 4

*...

....

.*..

....

3 5

**...

.....

.*...

0 0

样例输出

Field #1:

*100

2210

1*10

1110

Field #2:

**100

33200

1*100

*/

#define INT_MAX 2000

#include<stdio.h>

#include<memory.h>

main (){

int m,n,i,j,k,x;

int ms[5],ns[5];

int dis[5][102][102];

char field[102][102];

m=1,n=2,k=0;

memset(dis,0,sizeof(dis));

while (m!=0&&n!=0){

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

if (m==0&&n==0) break;

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

scanf("%s",field[i]);

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

if (field[i][j]==’*’){

++dis[k+1][i-1][j-1];

++dis[k+1][i-1][j];

++dis[k+1][i-1][j+1];

++dis[k+1][i][j-1];

++dis[k+1][i][j+1];

++dis[k+1][i+1][j-1];

++dis[k+1][i+1][j];

++dis[k+1][i+1][j+1];

dis[k+1][i][j]=-INT_MAX;

}

}

++k;

ms[k]=m;

ns[k]=n;

}

for (x=1;x<=k;++x){

if (x!=1) printf("\n");

printf("Field #%d\n",x);

for (i=1;i<=ms[x];++i){

for (j=0;j<ns[x];++j)

if (dis[x][i][j]<0) printf("*");

else printf ("%d",dis[x][i][j]);

printf("\n");

}

}

return 0;

}

/*

测试结果1: 测试结果错误.错误结果为:Field #1

*100

2210

1*10

1110

Field #2

**100

33200

1*100

正确结果应为:Field #1:

*100

2210

1*10

1110

Field #2:

**100

33200

1*100

测试结果2: 测试结果错误.错误结果为:Field #1

2*32333321

3*5******2

3*6*6556*3

3*6*4**5*3

3*6*44*6*3

3*6*55*6*3

3*5****5*3

3*656656*3

2********2

1233333321

正确结果应为:Field #1:

2*32333321

3*5******2

3*6*6556*3

3*6*4**5*3

3*6*44*6*3

3*6*55*6*3

3*5****5*3

3*656656*3

2********2

1233333321

测试结果3: 测试结果错误.错误结果为:Field #1

01110001110

02*20002*20

03*31113*30

03*42*24*30

02*4*3*4*20

013*323*310

002*202*200

00111011100

Field #2

00123332100

001*****100

00125*52100

00003*30000

00003*30000

00125*52100

001*****100

00123332100

Field #3

12210001221

2**21002**1

3*5*2103*41

3*42*213*30

3*312*24*30

4*3012*5*30

**20012**20

22100012210

Field #4

12333321000

2******2100

3*53333*210

3*300013*20

3*300013*20

3*53333*210

2******2100

12333321000

正确结果应为:Field #1:

01110001110

02*20002*20

03*31113*30

03*42*24*30

02*4*3*4*20

013*323*310

002*202*200

00111011100

Field #2:

00123332100

001*****100

00125*52100

00003*30000

00003*30000

00125*52100

001*****100

00123332100

Field #3:

12210001221

2**21002**1

3*5*2103*41

3*42*213*30

3*312*24*30

4*3012*5*30

**20012**20

22100012210

Field #4:

12333321000

2******2100

3*53333*210

3*300013*20

3*300013*20

3*53333*210

2******2100

12333321000

测试结果4: 测试结果错误.错误结果为:Field #1

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

正确结果应为:Field #1:

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

*/

#6 keroro@2010-10-15 19:19:00
回复 删除
repeat的最后一句写得不对,这样写的话最后总会有个空行。可以把writeln放在readln(n,m)后面,写为if( n<>0)and(z<>0)than writeln;
#7 407137009@2010-10-16 02:26:00
回复 删除
回复 地下室飞雪天涯 的帖子

LS的LS貌似掉了冒号去了。。

寒~~= =

#8 noip2012@2010-10-16 02:53:00
回复 删除
啊,当时好像也遇到了这个问题

在输出的最后一行没有换行

#9 jesse@2011-09-06 08:18:00
回复 删除
最后哦 没有空行!!

最后哦 没有空行!!

#10 ccty@2011-10-21 07:51:00
回复 删除
最后不能多空空行
查看更多回复
提交回复