1. 程式人生 > >洛谷 P1913 L國的戰鬥之傘兵

洛谷 P1913 L國的戰鬥之傘兵

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國的戰鬥之傘兵