题意:
输入一个n,然后输入两个n*n矩阵,一个代表雷的矩阵,一个代表走过的的矩阵。然后输出结果矩阵、
解题思路:
结果矩阵分两种情况,一个是没有踩到雷的,一个是踩到雷的,踩到雷的要把雷都显示出来。其实就是用
结构体的二维数组存的两个矩阵,然后输入,判断即可。
具体代码:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
#include<iostream> #include<cstring> #include<string> using namespace std; int n; struct node { char lei; char kai; }map[15][15]; int fangxiang[9][2]={{0,0},{0,1},{1,0},{0,-1},{-1,0},{1,-1},{-1,1},{1,1},{-1,-1}}; int Try(int x,int y) { int sum=0; for(int i=0;i<9;i++) { int xx=x+fangxiang[i][0]; int yy=y+fangxiang[i][1]; if(xx>=0&&xx<n&&yy>=0&&yy<n) if(map[xx][yy].lei=='*') sum++; } return sum; } int main() { cin>>n; int res=0; for(int i=0;i<n;i++) for(int j=0;j<n;j++) cin>>map[i][j].lei; for(int i=0;i<n;i++) for(int j=0;j<n;j++) cin>>map[i][j].kai; for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(map[i][j].kai=='x'&&map[i][j].lei=='*') res=1; if(res==0) { for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(map[i][j].kai=='.') cout<<"."; else if(map[i][j].kai=='x') { cout<<Try(i,j); } } cout<<endl; } } else { for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(map[i][j].kai=='.'&&map[i][j].lei!='*') cout<<"."; else if(map[i][j].lei=='*') cout<<"*"; else if(map[i][j].kai=='x') { cout<<Try(i,j); } } cout<<endl; } } system("pause"); return 0; }