ABC341C 题解
题意简述
的网格,给定操作序列,任意选择起点,途中不能经过 # 点,问有多少个终点。
思路分析
每一个终点都对应一个起点有操作序列,所以可以枚举起点然后进行对操作序列的转化。
时间复杂度 ,不会超时。
代码实现
在判断时必须要判断是否越界,这增大了很多码量。
所以我们可以初始将所有都设为 # 然后输入,这样边界的所有点都是 #,就不会出现越界问题了。
Code
#include<iostream>
using namespace std;
char c[505][505];
string s;
int n,h,w;
int main(){
cin>>h>>w>>n>>s;
for(int i=0;i<=501;i++){
for(int j=0;j<=501;j++){
c[i][j]='#';
}
}
for(int i=1;i<=h;i++){
for(int j=1;j<=w;j++){
cin>>c[i][j];
}
}
int ans=0;
for(int i=1;i<=h;i++){
for(int j=1;j<=w;j++){
int nowi=i,nowj=j,f=1;
if(c[nowi][nowj]=='#')continue;
for(int k=0;k<s.length();k++){
if(s[k]=='R')nowj++;
if(s[k]=='L')nowj--;
if(s[k]=='U')nowi--;
if(s[k]=='D')nowi++;
if(c[nowi][nowj]=='#'){
f=0;
break;
}
}
if(f)ans++;
}
}
cout<<ans<<endl;
}

浙公网安备 33010602011771号