首页 > 代码库 > poj-2612
poj-2612
题意:
输入一个n,然后输入两个n*n矩阵,一个代表雷的矩阵,一个代表走过的的矩阵。然后输出结果矩阵、
解题思路:
结果矩阵分两种情况,一个是没有踩到雷的,一个是踩到雷的,踩到雷的要把雷都显示出来。其实就是用
结构体的二维数组存的两个矩阵,然后输入,判断即可。
具体代码:
#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; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。