ABC341C 题解

题意简述

h×wh\times w 的网格,给定操作序列,任意选择起点,途中不能经过 # 点,问有多少个终点。

思路分析

每一个终点都对应一个起点有操作序列,所以可以枚举起点然后进行对操作序列的转化。

时间复杂度 O(n3)\operatorname{O}(n^3),不会超时。

代码实现

在判断时必须要判断是否越界,这增大了很多码量。

所以我们可以初始将所有都设为 # 然后输入,这样边界的所有点都是 #,就不会出现越界问题了。

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;
}
posted @   Weslie_qwq  阅读(4)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示