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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

OpenJudge NOI 1.8 17:最好的草

發布時間:2025/3/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenJudge NOI 1.8 17:最好的草 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【題目鏈接】

OpenJudge NOI 1.8 17:最好的草

【題目考點】

1. 二維數組

2. 方向數組

表示上下左右的方向數組:
int dir[4][2] = {{0,1},{0,-1},{-1,0},{1,0}};

int dx[4] = {0,0,1,-1}, dy[4] = {1,-1,0,0};

【解題思路】

理解題意,相鄰兩個’#'算作一塊草叢。
可以理解為:
.#. 是1個草叢

.## 是1個草叢

### 是2個草叢

.#.
### 是4個草叢
.#.
因而每個#有兩種情況:

  • 參與到一個兩個#組成的草叢中,相當于每個#貢獻0.5個草叢。如果它周圍有x個#,它就會參與構成x個草叢,它貢獻的草叢數為0.5x0.5x0.5x
  • 單獨形成一個草叢,每個#貢獻1個草叢

為了避免處理小數,把上述推導中的小數變為整數,改為計分制,一個草叢算2分,敘述如下:
遍歷整個二維數組,如果當前位置是#,則遍歷其周圍上下左右四個位置

  • 如果這四個位置中存在#,則中心位置參與構成兩個#的草叢。每存在一個#,加1分。
  • 如果四個位置不存在#,那么中心位置的#獨自構成一個草叢,加2分。

最后將總分數除以2,即為草叢的個數。

【題解代碼】

解法1:二維方向數組

#include <bits/stdc++.h> using namespace std; #define N 105 int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}}; int main() {//單獨的草算2分,如果由2塊組成的草一定會被計算兩次,每個算1分。最后除以2。char a[N][N];int r, c, s = 0;cin >> r >> c;for(int i = 1; i <= r; i++)for(int j = 1; j <= c; j++)cin >> a[i][j];for(int i = 1; i <= r; i++)for(int j = 1; j <= c; j++){if(a[i][j] == '#'){bool flag = false;//i,j周圍有是否有草for(int d = 0; d < 4; d++){int x = i + dir[d][0], y = j + dir[d][1];if(x >= 1 && x <= r && y >= 1 && y <= c && a[x][y] == '#'){s++;flag = true;}}if(flag == false)//一個#單獨構成草叢s += 2;}}cout << s/2;return 0; }

解法2:一維方向數組

#include <bits/stdc++.h> using namespace std; #define N 105 int dx[4] = {0,0,1,-1}, dy[4] = {1,-1,0,0}; int main() {char a[N][N];int r, c, s = 0;cin >> r >> c;for(int i = 1; i <= r; i++)for(int j = 1; j <= c; j++)cin >> a[i][j];for(int i = 1; i <= r; i++)for(int j = 1; j <= c; j++){if(a[i][j] == '#'){bool flag = false;//i,j周圍有沒有草for(int d = 0; d < 4; d++){int x = i + dx[d], y = j + dy[d];if(x >= 1 && x <= r && y >= 1 && y <= c && a[x][y] == '#'){s++;flag = true;}}if(flag == false)s += 2;}}cout << s/2;return 0; }

總結

以上是生活随笔為你收集整理的OpenJudge NOI 1.8 17:最好的草的全部內容,希望文章能夠幫你解決所遇到的問題。

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