zoukankan      html  css  js  c++  java
  • 10189 Minesweeper

    题目大意:

    题目原文:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=13&page=show_problem&problem=1130

    扫雷游戏。。。输入“*”的分布,“.”号变成数字表示该数字周围的八个格子里面有几个“*”。

    用二维字符串数组来储存输入的数据,然后从第一格开始数周围的格子的“*”个数。

    附上代码:

    View Code
     1 #include<stdio.h>
     2 int main()
     3 {
     4  int x,y,i,j,i2,j2,n=0;
     5  while(1)
     6  {
     7    n++;
     8    scanf("%d%d",&x,&y);
     9    getchar();
    10    if(x==0&&y==0) break;
    11    char a[x][y+1];
    12    for(i=0;i<x;i++)//输入数据 
    13    {
    14     gets(a[i]);
    15    }
    16    for(i=0;i<x;i++)
    17    {
    18     for(j=0;j<y;j++)//前两个for循环表示从第一行的第一格开始,到最后一行的最后一格 
    19      {
    20        if(a[i][j]=='.')//如果是“.” 
    21        {
    22         a[i][j]='0';//先初始赋值为'0'字符 
    23         for(i2=i-1;i2<=i+1;i2++)
    24          for(j2=j-1;j2<=j+1;j2++)//然后循环,周围的九格(包括它自己) 
    25           if(i2>=0&&i2<x&&j2>=0&&j2<y&&a[i2][j2]=='*') a[i][j]++;//条件是为了防止越界,如果是'*',计数加一 
    26        }
    27      }                 
    28    }
    29    if(n!=1) printf("\n");//控制格式,题目要求每两个Field之间直接留一个空行 
    30    printf("Field #%d:\n",n);
    31    for(i=0;i<x;i++)//输出 
    32    {
    33     for(j=0;j<y;j++)
    34      printf("%c",a[i][j]);
    35     printf("\n");
    36    }
    37  }
    38  return 0;  
    39 }
  • 相关阅读:
    OS快速开发必备
    YYmodel 郭耀源 底层分析
    UITableView使用总结和性能优化
    文件操作
    DOM解析
    SAX解析
    Gallery
    菜单(menu)
    计时器(Chronometer)、标签(TabHost)
    ListActivity
  • 原文地址:https://www.cnblogs.com/syiml/p/2913797.html
Copyright © 2011-2022 走看看