正文

扫雷游戏2007-02-13 17:11:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/xiaoxiaofeng/23340.html

分享到:

扫雷是Windows自带的游戏。游戏的目标是尽快找到雷区中的所有地雷,而不许踩到地雷。如果方块上的是地雷,将输掉游戏。如果方块上出现数字,则表示在其周围的八个方块中共有多少颗地雷。 你的任务是在已知地雷出现位置的情况下,得到各个方块中的数据。 *... .... “*”表示有地雷 .*.. “.”表示无地雷 .... 经过处理应得到 *100 2210 1*10 1110 输入 输入有多组数据,每组数据的第一行有两个数字,m,n(0<m,n<100)表示游戏中雷区的范围为m×n。接下来m行每行有n个字符。“*” 表示有地雷,“.”表示无地雷。最后一组数据m=0,n=0表示输入结束,不需要处理。 输出 对于每组输入数据,输出结果,各方块数字间不留空格。每组结果之后有一个空行。 输入样例2 3 *** ... 4 4 *... .... .*.. .... 0 0 输出样例*** 232 *100 2210 1*10 1110 Original: FZUPC Warmup 2005 #include<iostream>using namespace std; void do_with(char n[][100],int a,int b){ int i,j,k,h; for(i=0;i<a;i++)  for(j=0;j<b;j++)   if(n[i][j]=='*')   {    for(k=i-1;k<=i+1;k++)     for(h=j-1;h<=j+1;h++)      if(k<a&&k>=0&&h>=0&&h<b&&n[k][h]!='*')n[k][h]++;   }} int main(){    int a,b,i,j; char n[100][100]; while(cin>>a>>b) {  if(a==0&&b==0)break;  for(i=0;i<a;i++)   for(j=0;j<b;j++)   {    cin>>n[i][j];    if(n[i][j]=='.')n[i][j]='0';     }  do_with(n,a,b);  for(i=0;i<a;i++)  {   for(j=0;j<b;j++)    cout<<n[i][j];   cout<<endl;  } } return 0;}

阅读(89) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册