题解 P1913 【L国的战斗之伞兵】
Angel_Virus · · 题解
其实这题很简单,找对方法是关键。
找到无风的o点,然后开始推路径,然后将能到的点设为true,最后统计TRUE的个数就AC
#include<iostream>
using namespace std;
int i,j,n,m,num;
char a[1002][1002];
bool b[1002][1002];
void gui(int i,int j) //推路径
{ b[i][j]=true; //将这点记为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()
{
//freopen("Lsan.in","r",stdin);
//freopen("Lsan.out","w",stdout);
cin>>n>>m;
for(i=1;i<=n;i++) for(j=1;j<=m;j++) cin>>a[i][j];
for(i=1;i<=n;i++) for(j=1;j<=m;j++)
if(a[i][j]=='o') gui(i,j); //如果是无风点,则开始推路
for(i=1;i<=n;i++) for(j=1;j<=m;j++) if(b[i][j]) num++; //统计个数
cout<<num<<'\n'; //个人习惯,喜欢打换行符
//fclose(stdin);fclose(stdout);
//system("pause");
return 0;
}