求图像的周长 代码: #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int maxn=100+50; int n,m,x,y,ans,vis[maxn][maxn],d[8][2]={{1,0},{-1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};char s[maxn][maxn]; void dfs(int x,int y){ int i; if(vis[x][y])return ; vis[x][y]=1; for(i=0;i<8;i++){ int nx=x+d[i][0],ny=y+d[i][1]; if(i<=3&&s[nx][ny]!='X')ans++; if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&s[nx][ny]=='X')dfs(nx,ny); } } int main(){ int i; while(1){ cin>>n>>m>>x>>y; ans=0; memset(vis,0,sizeof(vis)); if(n==0&&m==0&&x==0&&y==0)break; for(i=1;i<=n;i++)cin>>s[i]+1; dfs(x,y); cout<<ans<<endl; } return 0; }