题目链接:扫雷 用户登录
# include <iostream>
using namespace std;
int n, m;
int a[155][155], g[155][155];
int dx[] = {-1, 0, 1, 1, 1, 0, -1, -1};
int dy[] = {1, 1, 1, 0, -1, -1, -1, 0}; //定义方向数组。其实也就是把起点定位(0 ,0);
int dfs(int x, int y)
{
int res = 0;
if(g[x][y] == 1)
{
return 9;
}
for(int i = 0; i < 8 ;i++)
{
if(x + dx[i] >= 0 && x + dx[i] < n && y + dy[i] >= 0 && y + dy[i] < m && g[x + dx[i]][y + dy[i]] == 1) res++; //实际上我发这个代码是为了我自己更加清晰这段代码,这段代码能够让(0,0)点往四周方向走。
}
return res;
}
int main()
{
cin>>n>>m;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
cin>>a[i][j];
g[i][j] = a[i][j]; //实际上把a[i][j]给到g[i][j]比较好,不会来说会有冲突。
}
}
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
cout<<dfs(i, j)<<" "; //dfs(i,j)也就是来说遍历二维数组上的每一位数字。函数调用。
}
cout<<endl;
}
return 0;
}
让定位这个点走的主要代码是(x + dx[i], y + dy[i]);