代码找bug;
代码:
#include<bits/stdc++.h>
using namespace std;
int a[32][32];
int main()
{
int n;
int q,w;
bool s=false,x=false,z=false,y=false;
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
}
}
for(int i=2;i<n;i++)
{
for(int j=2;j<n;j++)
{
if(a[i][j]==0)
{
q=i;
w=j;
for(int g=1;g<i;g++){if(a[g][j]==1){s=true;break;}}
for(int p=n-1;p>i;p--){if(a[p][j]==1){x=true;break;}}
for(int m=1;m<j;m++){if(a[i][m]==1){z=true;break;}}
for(int o=n-1;o>j;o--){if(a[i][o]==1){y=true;break;}}
if(s==true&&x==true&&z==true&&y==true)
{
a[q][w]=2;
}
}
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
思路:
枚举a[2n-1][2n-1]的每个点,若这个点为“0”且上下左右都有“1”,则改为2;
比如输入为:
6
0 0 1 1 1 0
1 1 1 0 1 0
1 0 0 0 0 1
1 1 0 1 1 1
0 1 0 1 0 0
0 1 1 1 0 0
输出应为:
0 0 1 1 1 0
1 1 1 2 1 0
1 2 2 2 2 1
1 1 2 1 1 1
0 1 2 1 1 0
0 1 1 1 0 0
我的输出:
0 0 1 1 1 0
1 1 1 2 1 0
1 2 2 2 2 1
1 1 2 1 1 1
0 1 2 1 2 0
0 1 1 1 0 0