洛谷 P1913 L國的戰鬥之傘兵
阿新 • • 發佈:2017-12-01
sample void out data- true div bad -a 輸入
P1913 L國的戰鬥之傘兵
題目背景
L國即將與I國發動戰爭!!
題目描述
為了在敵國滲透作戰,指揮官決定:派出傘兵前往敵國!然而敵國的風十分強烈,能讓傘兵在同一高度不停轉悠,直到被刮到一個無風區……(可憐的小兵)
輸入輸出格式
輸入格式:
第一行:n、m兩個正整數,表示敵國的大小。
以下n行,每行m個字符,“u”表示風向北吹;“d”表示風向南吹;“l”表示風向西吹;“r”表示風向東吹;“o”表示無風。(上北下南,左西右東)
輸出格式:
一個數:表示有幾個點可以放下傘兵。
輸入輸出樣例
輸入樣例#1: 復制5 5
rrrrr
rdddr
rroll
uuuuu
uuuuu
輸出樣例#1: 復制
19
說明
數據範圍:
1≤n≤1000,1≤m≤1000.
思路:模擬,一共1000000個點,先提前與處理出某個點能否到無風區,然後o(1)判斷即可。
#include<iostream> using namespace std; int n,m,num; char a[1002][1002]; bool b[1002][1002]; void gui(int i,int j){ b[i][j]=true; if(a[i+1][j]==‘u‘) gui(i+1,j); if(a[i-1][j]==‘d‘) gui(i-1,j); if(a[i][j+1]==‘l‘) gui(i,j+1); if(a[i][j-1]==‘r‘) gui(i,j-1); } int main(){ cin>>n>>m; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j]; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(a[i][j]==‘o‘) gui(i,j); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(b[i][j]) num++; cout<<num; }
洛谷 P1913 L國的戰鬥之傘兵