• 【洛谷题解】P2670 [NOIP2015 普及组] 扫雷游戏


    [NOIP2015 普及组] 扫雷游戏

    题目背景

    NOIP2015 普及组 T2

    题目描述

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

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

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

    输入格式

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

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

    输出格式

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

    样例 #1

    样例输入 #1

    3 3
    *??
    ???
    ?*?
    
    • 1
    • 2
    • 3
    • 4

    样例输出 #1

    *10
    221
    1*1
    
    • 1
    • 2
    • 3

    样例 #2

    样例输入 #2

    2 3
    ?*?
    *??
    
    • 1
    • 2
    • 3

    样例输出 #2

    2*1
    *21
    
    • 1
    • 2

    提示

    对于 100 % 100\% 100%的数据, 1 ≤ n ≤ 100 , 1 ≤ m ≤ 100 1≤n≤100, 1≤m≤100 1n100,1m100

    思路

            这道题没有乒乓球 这道题难,只要用一个二维字符数组。当这一格是雷时,输出*,否则就输出他周围的雷的数量。

    C语言AC代码

    #include
    char a[105][105];
    int main(){
    	int n,m,i,j;
    	scanf("%d%d",&n,&m);
    	getchar();
    	for(i=1;i<=n;i++){
    		for(j=1;j<=m;j++){
    			scanf("%c",&a[i][j]);
    		}
    		getchar();
    	}
    	for(i=1;i<=n;i++){
    		for(j=1;j<=m;j++){
    			if(a[i][j]=='*'){
    				printf("*");
    				continue;
    			} 
    			int cnt=0;
    			if(a[i-1][j]=='*') cnt++;
    			if(a[i+1][j]=='*') cnt++;
    			if(a[i][j-1]=='*') cnt++;
    			if(a[i][j+1]=='*') cnt++;
    			if(a[i-1][j-1]=='*') cnt++;
    			if(a[i+1][j+1]=='*') cnt++;
    			if(a[i+1][j-1]=='*') cnt++;
    			if(a[i-1][j+1]=='*') cnt++;
    			printf("%c",(cnt+'0'));
    		}
    		printf("\n");
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    总结

            这道题考察对字符数组的使用,对了,这可是NOIP2015 普及组第二题哦。

  • 相关阅读:
    SpringBoot——MVC自动配置原理《课时十三》
    word在写论文的一些技巧
    Java—简单斗地主(集合练习)
    【测控电路】微积分电路
    Python中使用requests库遇到的问题及解决方案
    centos7安装docker容器
    内网渗透之Linux反弹shell(三)
    Python基础入门例程60-NP60 跳过列表的某个元素(循环语句)
    《设计模式:可复用面向对象软件的基础》——行为模式(2)(笔记)
    Vue使用 dhtmlx-gantt 甘特图
  • 原文地址:https://blog.csdn.net/m0_60630094/article/details/127670450