菜鸡提问 二维数组遍历方向的数组
#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++)
{
nx=x+st[i][0];
ny=y+st[i][1];
if(s[nx][ny]=='@'&&nx>=0&&ny>=0&&nx<m&&ny<n)
{
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}可以
想问问什么原理