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.
答案除了最后一组超出范围外,都是一致的。
请问这个程序会有什么问题?
/*
查看题目 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
*/