zoukankan      html  css  js  c++  java
  • 扫雷游戏

    http://exam.upc.edu.cn/problem.php?cid=1050&pid=1

    题目描述

    扫雷游戏是一款十分经典的单机小游戏。在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格。

    现在给出n行m列的雷区中的地雷分布,要求计算出每个非地雷格周围的地雷格数。

    注:一个格子的周围格子包括其上、下、左、右、左上、右上、左下、右下八个方向上与之直接相邻的格子。

    输入

    第一行是用一个空格隔开的两个整数n和m,分别表示雷区的行数和列数。

    接下来n行,每行m个字符,描述了雷区中的地雷分布情况。字符’*’表示相应格子是地雷格,字符’?’表示相应格子是非地雷格。相邻字符之间无分隔符。

    输出

    输出包含n行,每行m个字符,描述整个雷区。用’*’表示地雷格,用周围的地雷个数表示非地雷格。相邻字符之间无分隔符。

    样例输入

    3 3

    *??

    ???

    ?*?

    样例输出

    *10

    221

    1*1

    没有中石油OJ的账号,所以代码有待验证!!!

     1 #include <stdio.h>
     2 int a[105][105];
     3 int main(){
     4     int m,n;    
     5     int i,j;
     6 
     7     while(scanf("%d%d",&m,&n) != EOF){
     8         for(i=0;i<=m;i++)
     9         for(j=0;j<=n;j++){
    10             a[i][j]=0;
    11         }
    12         int cnt=1;
    13         char ch;
    14         int row,cow; 
    15         while(cnt<=n*m){
    16             ch=getchar();
    17             if(ch=='
    ')
    18                 continue;
    19             if(ch=='*'){
    20                 row=(cnt-1)/n+1;
    21                 cow=(cnt-1)%n+1;
    22                 a[row][cow]=-1;
    23                 
    24                 if(a[row][cow-1] != -1)
    25                     a[row][cow-1]++;     //
    26                 if(a[row][cow+1] != -1)
    27                     a[row][cow+1]++;     //
    28                 if(a[row-1][cow] != -1)
    29                     a[row-1][cow]++;     //
    30                 if(a[row+1][cow] != -1)
    31                     a[row+1][cow]++;     //
    32                 if(a[row-1][cow+1] != -1)//右上
    33                     a[row-1][cow+1]++;
    34                 if(a[row-1][cow-1] != -1)//左上
    35                     a[row-1][cow-1]++;
    36                 if(a[row+1][cow-1] != -1)//左下
    37                     a[row+1][cow-1]++;
    38                 if(a[row+1][cow+1] != -1)//右下
    39                     a[row+1][cow+1]++;
    40             }
    41             cnt++;
    42         }
    43         for(i=1;i<=m;i++){
    44             for(j=1;j<=n;j++){
    45                 if(a[i][j]==-1)
    46                     printf("*");
    47                 if(a[i][j] != -1)
    48                     printf("%d",a[i][j]);
    49                 if(j == n)
    50                     printf("
    ");
    51             }
    52         }
    53     }
    54     return 0;
    55 }

     

  • 相关阅读:
    jQuery标准的AJAX模板
    maven库
    在 Windows7 上按照 MySQL5.7
    如何保证代码的有效性
    项目负责人的职责
    string integer == equals 转
    走近AbstractQueuedSynchronizer
    STAR
    tesseract-ocr
    Spring @Qualifier l转
  • 原文地址:https://www.cnblogs.com/yfs123456/p/5564944.html
Copyright © 2011-2022 走看看