题目:
分析:虽然是一道简单题,那为什么自己要写呢?
因为这涉及到了一点:换个角度的思想。
自己在做数学题经常可以想到,但在写代码的时候,基本上都会忘记。
代码:
#include<bits/stdc++.h>
using namespace std;
int A1[31][31];
int A2[31][31];
int m;
int D1[4]={1,-1,0,0};
int D2[4]={0,0,1,-1};
void dfs(int x,int y)
{
if(x>=m||y>=m||y<0||x<0) return;
if(A1[x][y]!=0) return;
A1[x][y]=-1;
for(int i=0;i<4;i++) dfs(x+D1[i],y+D2[i]);
}
int main()
{
cin>>m;
for(int i=0;i<m;i++)
for(int j=0;j<m;j++)
{
cin>>A1[i][j]; A2[i][j]=A1[i][j];
}
for(int i=0;i<m;i++) dfs(m-1,i);
for(int i=0;i<m;i++) dfs(0,i);
for(int i=0;i<m;i++) dfs(i,0);
for(int i=0;i<m;i++) dfs(i,m-1);
cout<<"-------"<<endl;
for(int i=0;i<m;i++)
{
for(int j=0;j<m;j++)
{
if(A1[i][j]==-1) cout<<0<<' ';
if(A1[i][j]==0) cout<<2<<' ';
if(A1[i][j]==1) cout<<1<<' ';
}
cout<<endl;
}
cout<<"-------"<<endl;
for(int i=0;i<m;i++)
{
for(int j=0;j<m;j++)
{
cout<<A1[i][j]<<' ';
}
cout<<endl;
}
}