#include<iostream> #include<string.h> #include <stdio.h> using namespace std; //1,0,-1,0,0-1,0,1,1,1,1,-1,-1,1,-1,-1 int st[8][2]={-1,-1,-1,0,-1,1,0,-1,0,1,1,-1,1,0,1,1},sum=0; int m,n;const int z=105; char s[z][z]={}; void dfs(int x,int y) {
int nx,ny; for(int i=0;i<8;i++)//8个方向 { nx=x+st[i][0]; ny=y+st[i][1]; if(s[nx][ny]=='@'&&nx>=0&&ny>=0&&nx<m&&ny<n) //5个判断条件
{ s[nx][ny]='*';dfs(nx,ny); } } } int main() { while(cin>>m>>n) { if(m==0&&n==0) break;sum=0; for(int i=0;i<m;i++) for(int j=0;j<n;j++) cin>>s[i][j];//输入图 for(int i=0;i<m;i++) for(int j=0;j<n;j++) { if(s[i][j]=='@') {sum++;dfs(i,j);} } cout<<sum<<endl; } } /* 其中int st[8][2]={-1,-1,-1,0,-1,1,0,-1,0,1,1,-1,1,0,1,1}可以 {1,0,-1,0,0-1,0,1,1,1,1,-1,-1,1,-1,-1}不可以 {1,0},{-1,0},{0,1},{0,-1},{1,1},{-1,1},{1,-1},{-1,-1}可以
//写这个题错了好几个个小地方 把==写成= 把nx,ny写成x,y 自定义数组少加了逗号..
关于自己是否适合编程的很简单的测试:
在报纸或杂志上随便找一段约1000字的文章,在Word中输入一遍。输完后再参考下面答案:
A里面有10处以上文字或标点错误
B里面没有文字或标点错误并敢为此跟人打赌
C里面没有文字或标点错误并且字体和排版完全与原稿一致
D打印在半透明的纸上和原稿重叠在一起检查一模一样,且自我感觉很有成就感
A不适合编程(理由:打字准确度偏低、粗心大意)
B初级程序员(理由:打字准确度很高、认真细致、自信、理解全角半角概念)
C高级程序员(理由:在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证)
D软件项目经理(理由:能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业!)