日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[蓝桥杯][算法提高VIP]扫雷-枚举

發布時間:2023/12/4 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [蓝桥杯][算法提高VIP]扫雷-枚举 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述
掃雷游戲你一定玩過吧!現在給你若干個n×m的地雷陣,請你計算出每個矩陣中每個單元格相鄰單元格內地雷的個數,每個單元格最多有8個相鄰的單元格。 0< n,m< =100

(注意兩個矩陣之間應該有一個空行,由于oj的格式化這里不能顯示出來)

輸入

輸入包含若干個矩陣,對于每個矩陣,第一行包含兩個整數n和m,分別表示這個矩陣的行數和列數。接下來n行每行包含m個字符。安全區域用‘.’表示,有地雷區域用’*'表示。當n=m=0時輸入結束。

數據規模和約定
0< n,m< =100

輸出
對于第i個矩陣,首先在單獨的一行里打印序號:“Field #i:”,接下來的n行中,讀入的’.'應被該位置周圍的地雷數所代替。輸出的每兩個矩陣必須用一個空行隔開。

樣例輸入4 4 *... .... .*.. .... 3 5 **... ..... .*... 0 0 樣例輸出Field #1: *100 2210 1*10 1110 Field #2: **100 33200 1*100

解題思路:
水題!!!但不知道為什么要考慮邊界,感覺不考慮邊界也對啊!

AC代碼如下:

#include <iostream> using namespace std; const int N = 110; int n, m; char g[N][N]; char a[N][N];int main() {int count = 0;while (cin >> n >> m, n, m) {count++;for (int i = 1; i <= n; i++)for (int j = 1; j <= m; j++)cin >> g[i][j];for (int i = 1; i <= n; i++)for (int j = 1; j <= m; j++) {if (g[i][j] == '*')a[i][j] = '*';else if (g[i][j] == '.') {int cnt = 0;if ( i + 1 <= n && j <= m && g[i + 1][j] == '*')cnt++;if (i + 1 <= n && j + 1 <= m && g[i + 1][j + 1] == '*')cnt++;if (i + 1 <= n && j - 1 >= 1 && g[i + 1][j - 1] == '*')cnt++;if (i - 1 >= 1 && j <= m && g[i - 1][j] == '*')cnt++;if (i - 1 >= 1 && j + 1 <= m && g[i - 1][j + 1] == '*')cnt++;if (i - 1 >= 1 && j - 1 >= 1 && g[i - 1][j - 1] == '*')cnt++;if (i <= n && j + 1 <= m && g[i][j + 1] == '*')cnt++;if (i <= n && j - 1 >= 1 && g[i][j - 1] == '*')cnt++;a[i][j] = cnt + '0';}}cout << "Field #" << count << ": " << endl;for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {cout << a[i][j];}cout << endl;}cout << endl;}return 0; }

我感覺這道題不考慮邊界也對,但是不知道為什么ac不了,只能拿60分,代碼如下:

#include <iostream> using namespace std; const int N = 110; int n, m; char g[N][N]; char a[N][N];int main() {int count = 0;while (cin >> n >> m, n, m) {for (int i = 0; i <= n + 1; i++)for (int j = 0; j <= m + 1; j++)g[i][j] == '.';count++;for (int i = 1; i <= n; i++)for (int j = 1; j <= m; j++)cin >> g[i][j];for (int i = 1; i <= n; i++)for (int j = 1; j <= m; j++) {if (g[i][j] == '*')a[i][j] = '*';else if (g[i][j] == '.') {int cnt = 0;if (g[i + 1][j] == '*')cnt++;if (g[i + 1][j + 1] == '*')cnt++;if (g[i + 1][j - 1] == '*')cnt++;if (g[i - 1][j] == '*')cnt++;if (g[i - 1][j + 1] == '*')cnt++;if (g[i - 1][j - 1] == '*')cnt++;if (g[i][j + 1] == '*')cnt++;if (g[i][j - 1] == '*')cnt++;a[i][j] = cnt + '0';}}cout << "Field #" << count << ": " << endl;for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {cout << a[i][j];}cout << endl;}cout << endl;}return 0; }

有人知道為什么嗎???評論告訴我一下哦,謝謝啦!

總結

以上是生活随笔為你收集整理的[蓝桥杯][算法提高VIP]扫雷-枚举的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。