在Lake Counting問題的深度優先代碼基礎上,計算有多少個水洼,每個水洼有多少積水(即有多少個W)。
輸入(第一行兩個整數N和M,表示N*M大小的園子,緊接著N行,每行M個字符W代表積水,數值代表沒有積水)
輸出在一行,第一個數是K個水洼,緊接著K個整數,每個數是對應水洼大小(從小到大排列),數之間有一個空格(結尾沒有空格,也沒有回車)
例如:
輸入:
10 12
W234567890WW
1WWW567890WW
1234WW7890WW
1234567890WW
12345678901W
12W4567890W2
1W3W567890WW
W2W4W678901W
1W3W5678901W
12W45678901W
輸出:
3 6 9 15
我的代碼
#include<iostream>
using namespace std;
char yuan[101][101];
int n, m;int num = 0; int a, b, c;
void dfs(int x, int y){
yuan[x][y] = '.'; num++; //將W替換為.
//回圈遍歷八個方向
for (int i = -1; i <= 1; i++)
{
for (int j = -1; j <= 1; j++)
{
int nx = x + i, ny = y + j; //向x方向移動i,向y方向移動j
if (nx >= 0 && nx < n&&ny >= 0 && ny < m&&yuan[nx][ny] == 'W') //判斷該點是否在園子內,且是否有積水,若有,則dfs
{
dfs(nx, ny); } } }
return; }
int main()
{
int ans = 0;
cin >> n >> m;
for (int i = 0; i<n; i++)
{
for (int j = 0; j<m; j++)
{
cin >> yuan[i][j];
}
}
for (int i = 0; i<n; i++)
{
for (int j = 0; j<m; j++)
{
if (yuan[i][j] == 'W')
{
dfs(i, j); cout<<num<<" "; num = 0; ans++;
} } }
cout << ans<<" "; return 0;}
輸出為6 15 9 3,請問該如何排序?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/118721.html
標籤:C++ 語言
上一篇:CONST &的新手疑問
下一篇:這個變數怎么寫!
