记录一代码如下:
#include<cstdio>
int n,ans,a[31][31];
void dfs(int x,int y){
if(x<1||y<1||x>n||y>n)
return;
if(a[x][y]==1||a[x][y]==2)
return;
a[x][y]=2;
dfs(x+1,y);
dfs(x-1,y);
dfs(x,y+1);
dfs(x,y-1);
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%d",&a[i][j]);
dfs(1,1);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(a[i][j]==0) printf("2 ");
else if(a[i][j]==2) printf("0 ");
else printf("1 ");
}
printf("\n");
}
return 0;
}
此时 #5 AC,发现了亿些问题,所以修改了一下代码。
记录二代码如下:
#include<cstdio>
int n,ans,a[32][32];
void dfs(int x,int y){
if(x<1||y<1||x>n+2||y>n+2)
return;
if(a[x][y]==1||a[x][y]==2)
return;
a[x][y]=2;
dfs(x+1,y);
dfs(x-1,y);
dfs(x,y+1);
dfs(x,y-1);
}
int main(){
scanf("%d",&n);
for(int i=2;i<=n+1;i++)
for(int j=2;j<=n+1;j++)
scanf("%d",&a[i][j]);
//printf("\n");
dfs(1,1);
for(int i=2;i<=n+1;i++){
for(int j=2;j<=n+1;j++){
if(a[i][j]==0) printf("2 ");
else if(a[i][j]==2) printf("0 ");
else printf("1 ");
}
printf("\n");
}
return 0;
}
此时 #5 变成了“to short on line 1.”。
什么?输出太短了?我下载了一下样例,发现输出与样例输出完全相同,再洛谷 IDE 上测试也一样,完全没有出现缺少空格、输出的情况,请问为什么?感谢大佬!