題目描述
為了在敵國滲透作戰,指揮官決定:派出傘兵前往敵國!然而敵國的風十分強烈,能讓傘兵在同一高度不停轉悠,直到被刮到一個無風區……
輸入格式
第一行兩個整數?n,m,表示敵國的大小。
以下?n?行,每行?m?個字符,u
?表示風向北吹;d
?表示風向南吹;l
?表示風向西吹;r
?表示風向東吹;o
?表示無風。(上北下南,左西右東)
輸出格式
一個數:表示有幾個點可以放下傘兵。
樣例 #1
樣例輸入 #1
5 5
rrrrr
rdddr
rroll
uuuuu
uuuuu
樣例輸出 #1
19
提示
數據范圍:1≤n,m≤1000
正片開始
ok,首先先分析一下樣例
他的意思是
u=up=上
d=down=下
l=left=左
r=right=右
現在再使出我練習兩年半的畫技畫出一個5*5的表格
再把數據填入表格?
?我們發現,如果按照? u上? d下? l左? r右 的走法,比如說傘兵出生在 (2,1) 的走法如下
他最終可以到達無風區o
我們可以通過模擬來解,他讓我們往哪就往哪
好的,提示就到這里,現在代碼答案
//csdnfishingliver diaoyudegan
#include<bits/stdc++.h>
using namespace std;
int n,m,ans;
bool vis[1005][1005];
char g[1005][1005];
void dfs(int x,int y){vis[x][y]=1;if(g[x-1][y]=='d') dfs(x-1,y);if(g[x+1][y]=='u') dfs(x+1,y);if(g[x][y-1]=='r') dfs(x,y-1);if(g[x][y+1]=='l') dfs(x,y+1);
}
int main(){cin>>n>>m;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]=='o'){vis[i][j]=1;dfs(i,j);}}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(vis[i][j]) ans++; }}cout<<ans;return 0;
}
ok這次的博文就到這里,沒點關注的關注一下唄~如果可以就善意的評論壹下唄~在點個贊就更完美了~
收工!?