当前位置: 代码迷 >> 综合 >> 2022.4.3 17:50 洛谷P2670
  详细解决方案

2022.4.3 17:50 洛谷P2670

热度:32   发布时间:2023-12-05 14:06:22.0

C:(100分)

我是用二维数组做的

思路是当初学C的时候学做扫雷游戏的基础:

C语言从入门到进阶(C语言入门搞定C语言C语言视频教程C语言入门到进阶C语言教程C语言教程C语言教程C语言入门教程C语言入教程C语言C语言视频C语言教程)_哔哩哔哩_bilibili

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int leiqu[120][120] = { 0 };  //二维数组,用于储存 雷的位置 以及 用于记录非雷格子int main()
{int a, b;char ch;scanf("%d %d", &a, &b);getchar();  //有一个 换行符,要去掉for (int i = 1; i <= a; i++){for (int j = 1; j <= b; j++){ch = getchar();if (ch == '*'){leiqu[i][j] = 10;  //因为我是 int类型的数组,不能直接储存'*',就取巧//你一个格子周围就8格,那这个格子最大的数就是8,我用10表示'*'//在下面输出的时候判断 如果数字大于8 就是雷leiqu[i - 1][j]++;  //上leiqu[i - 1][j - 1]++;  //上左leiqu[i - 1][j + 1]++;  //上右leiqu[i + 1][j]++;  //下leiqu[i + 1][j - 1]++;  //下左leiqu[i + 1][j + 1]++;  //下右leiqu[i][j - 1]++;  //左leiqu[i][j + 1]++;  //右}}getchar();    //每一行结尾 有一个看不见的 换行符,要去掉}for (int i = 1; i <= a; i++){for (int j = 1; j <= b; j++){if (leiqu[i][j] > 8)  //判断 如果数字大于8 就是雷{printf("*");}else{printf("%d", leiqu[i][j]);}}printf("\n");  //补上 换行符}return 0;
}

C++ 和 python 方面没有新思路,逻辑差不多