• uva 10189 Minesweeper


    题目描述:

     

    Problem B: Minesweeper

    The Problem

    Have you ever played Minesweeper? It's a cute little game which comes within a certain  Operating System which name we can't really remember. Well, the goal of the game is to find where are all the mines within a MxN field. To help you, the game shows a number in a square which tells you how many mines there are adjacent to that square. For instance, supose the following 4x4 field with 2 mines (which are represented by an * character):

    *...
    ....
    .*..
    ....
    

    If we would represent the same field placing the hint numbers described above, we would end up with:

    *100
    2210
    1*10
    1110
    

    As you may have already noticed, each square may have at most 8 adjacent squares.

    The Input

    The input will consist of an arbitrary number of fields. The first line of each field contains two integers n and m (0 < n,m <= 100) which stands for the number of lines and columns of the field respectively. The next n lines contains exactly m characters and represent the field. Each safe square is represented by an "." character (without the quotes) and each mine square is represented by an "*" character (also without the quotes). The first field line where n = m = 0 represents the end  of input and should not be processed.

    The Output

    For each field, you must print the following message in a line alone:

    Field #x:

    Where x stands for the number of the field (starting from 1). The next n lines should contain the field with the "." characters replaced by the number of adjacent mines to that square. There must be an empty line between field outputs.

    Sample Input

    4 4
    *...
    ....
    .*..
    ....
    3 5
    **...
    .....
    .*...
    0 0
    

    Sample Output

    Field #1:
    *100
    2210
    1*10
    1110
    
    Field #2:
    **100
    33200
    1*100
    
     
    源代码:

    #include<iostream>

    #include<cstring>

    using namespace std;

    char chi[105][105],cho[105][105];

    int main()

    {

        int n,m,i,j,num;

        num=1;

        while(cin>>n>>m)

        {

            if(n==0 && m==0) break;

            for(i=1;i<=n;++i)

                for(j=1;j<=m;++j)

                    cin>>chi[i][j];

            memset(cho,'0',sizeof(cho));

            if(num!=1) cout<<endl;//第0行不输出

            for(i=1;i<=n;++i)//从1开始,避免了很多判断

                for(j=1;j<=m;++j)

                {

                    if(chi[i][j]=='.') continue;

                    else

                    {

                        cho[i][j]='*';

                        if(cho[i-1][j-1]!='*') cho[i-1][j-1]+=1;

                        if(cho[i-1][j]!='*') cho[i-1][j]+=1;

                        if(cho[i-1][j+1]!='*')cho[i-1][j+1]+=1;

                        if(cho[i][j-1]!='*') cho[i][j-1]+=1;

                        cho[i+1][j-1]+=1;

                        cho[i][j+1]+=1;

                        cho[i+1][j+1]+=1;

                        cho[i+1][j]+=1;

                    }

                }

            cout<<"Field #"<<num++<<":"<<endl;

            for(i=1;i<=n;++i)

            {

                for(j=1;j<=m;++j)

                {

                    cout<<cho[i][j];

                }

                cout<<endl;

            }

            

        }

        system("pause");

        return 0;

    }

     

    
    题目提交了好多次,总是WA,最后发现是输出格式的错误,太悲催了。
  • 相关阅读:
    洛谷1012 拼数
    洛谷1012 拼数
    洛谷 1155 (NOIp2008)双栈排序——仔细分析不合法的条件
    bzoj 3566 [SHOI2014]概率充电器——树型
    bzoj 1415 [Noi2005]聪聪和可可——其实无环的图上概率
    洛谷 1291 [SHOI2002]百事世界杯之旅
    洛谷 1365 WJMZBMR打osu! / Easy
    洛谷 1297 [国家集训队]单选错位——期望
    洛谷 1099 ( bzoj 1999 ) [Noip2007]Core树网的核
    洛谷 2827 蚯蚓——相邻两个比较的分析
  • 原文地址:https://www.cnblogs.com/redlight/p/2291594.html
Copyright © 2020-2023  润新知