• 【洛谷题解】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 普及组第二题哦。

  • 相关阅读:
    SkeyeVSS实现消防安全通道智能识别监控解决方案
    一本通OJ 1376
    计算机毕业设计SSM电子投票系统【附源码数据库】
    Python面试1-50题汇总,都是常问的面试题!
    Docker swarm 管理 secrets
    Unity --- 时间类与 Application(应用类)的使用
    算法|203. 移除链表元素 206.反转链表 707. 设计链表
    C++指针和引用
    【C语言】宏
    Neo4j-Graph数据库技能树学习体验及一些建议
  • 原文地址:https://blog.csdn.net/m0_60630094/article/details/127670450