zoukankan      html  css  js  c++  java
  • Problem : [NOIP2015普及组]扫雷游戏

    Problem : [NOIP2015普及组]扫雷游戏

    Time Limit: 1 Sec Memory Limit: 128 MB

    Description

    扫雷游戏是一款十分经典的单机小游戏。在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格。现在给出n行m列的雷区中的地雷分布,要求计算出每个非地雷格周围的地雷格数。注:一个格子的周围格子包括其上、下、左、右、左上、右上、左下、右下八个方向上与之直接相邻的格子。

    Input

    输入文件第一行是用一个空格隔开的两个整数n和m,分别表示雷区的行数和列数。
    接下来n行,每行m个字符,描述了雷区中的地雷分布情况。字符’*’表示相应格子是地雷格,字符’?’表示相应格子是非地雷格。相邻字符之间无分隔符。
    1≤n≤100, 1≤m≤100

    Output

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

    Sample Input

    3 3
    *??
    ???
    ?*?

    Sample Output

    *10
    221
    1*1

    code:

    #include<bits/stdc++.h>
    using namespace std;
    const int MM=102;
    char lei[MM][MM];
    int N,M;
    int jisuan(int i, int j) {
    	int ans=0;
    	if(lei[i][j-1]=='*')ans++;
    	if(lei[i][j+1]=='*')ans++;
    	if(lei[i-1][j-1]=='*')ans++;
    	if(lei[i-1][j]=='*')ans++;
    	if(lei[i-1][j+1]=='*')ans++;
    	if(lei[i+1][j-1]=='*')ans++;
    	if(lei[i+1][j]=='*')ans++;
    	if(lei[i+1][j+1]=='*')ans++;
    	return ans;
    }
    int main() {
    	cin>>N>>M;
    	for(int i=0; i<=N+1; i++) {
    		for(int j=0; j<=M+1; j++) {
    			lei[i][j]='?';
    		}
    	}
    	for(int i=1; i<=N; i++) {
    		for(int j=1; j<=M; j++) {
    			cin>>lei[i][j];
    		}
    	}
    	for(int i=1; i<=N; i++) {
    		for(int j=1; j<=M; j++) {
    			if( lei[i][j]=='*') cout<<"*";
    			else cout<<jisuan(i,j);
    		}
    		cout<<endl;
    	}
    	return 0;
    }
    
  • 相关阅读:
    净化-湿式除尘器:湿式除尘器
    净化-袋式除尘器:袋式除尘器
    LOCK
    locale
    loadkeys
    LOAD
    ln -在文件之间建立连接
    lmhosts
    listen
    listalias
  • 原文地址:https://www.cnblogs.com/ZhaoChongyan/p/11740414.html
Copyright © 2011-2022 走看看