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; }
时间: 2024-11-18 02:47:02