Uva 10189 Minesweeper 扫雷游戏

来源:互联网 发布:热网远程监控系统数据 编辑:程序博客网 时间:2024/03/29 19:57


解题思路:这题还是比较简单,找个一个是地雷的位置,然后将从八个方向上的地雷数+1就好了,具体贴上代码。

#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int maxn=105;char map[maxn][maxn];int m,n;//将当前位置的八个方向地雷数加1void cnt(int x,int y) {for(int i=-1; i<=1; i++) {for(int j=-1; j<=1; j++) {int dx=x+i;int dy=y+j;//如果移动到的位置是合法的if(dx>=0&&dx<m&&dy>=0&&dy<n&&map[dx][dy]!='*') {map[dx][dy]+=1;}}}}void solution() {//input mapfor(int i=0; i<m; i++) {gets(map[i]);replace(map[i],map[i]+n,'.','0');}for(int i=0; i<m; i++) {for(int j=0; j<n; j++) {if(map[i][j]=='*') {cnt(i,j);}}}for(int i=0; i<m; i++)puts(map[i]);}int main() {int k=0;while(cin>>m>>n) {cin.get();if(!m&&!n) break;if(k) cout<<"\n";cout<<"Field #"<<++k<<":"<<endl;solution();}return 0;}


原创粉丝点击