题目都是日语,我简单解释下题意 给定长和宽,求有多少区域,不同字符代表不同种类,同一种类四个方向连在一起的算一个区域
Sample Input 10 10 ####@ @#@@@@## @##@@@* #***#@ ##@#@@## @@@@@@@# #@@## @@@@@##@ @#@##** @****#@@#@ 0 0
Output for the Sample Input 33
#include<iostream> #include<cstring> using namespace std; char G[105][105]; int n,m; int step[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; void dfs(int x,int y,char c) { G[x][y]='.'; for(int i=0;i<4;i++) { int nx=x+step[i][0],ny=y+step[i][1]; if(nx>0&&nx<=n&&ny>0&&ny<=m&&G[nx][ny]==c) dfs(nx,ny,c); } } int main() { while(cin>>n>>m) { if(n==m&&n==0) break; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>G[i][j]; int sum=0; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(G[i][j]!='.') { dfs(i,j,G[i][j]); sum++; } cout<<sum<<endl; } return 0; }