cf 908B
2024-09-06 22:37:05
思路:刚开始看到这个题的时候,一头雾水,也不知道要干什么,后来百度翻译了了一遍,看明白了,不得不说自己的英语太差了,好了,步入正题:
给你n行m列,S表示入口,E表示出口,.表示可以通行,#表示障碍物如果遇到障碍物就直接break;遇到出口停下,给了一串字符串表示行走,但他不知道0123各代表哪一个方向,所以问问你可以有几条路走
0123一共4个数,那就暴力4!= 4 * 3 * 2 * 1 = 24;
直接上代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm> using namespace std;
int n, m,xchushi,ychushi, x, y;
char s[][];
string c;
int a[];
int shu[] = {, , , };//最初表示0上1下2左3右
int cnt;//记录情况的可能
int f; int main() {
ios::sync_with_stdio();
cin.tie();
cout.tie();
cin >> n >> m;
for (int i = ; i < n; i++) {
for (int j = ; j < m; j++) {
cin >> s[i][j];
//cout << s[i][j];
if (s[i][j] == 'S') {
xchushi = i;
ychushi = j;
}
}
//cout << endl;
}
cin >> c;
//cout << c << endl;
for (int i = ; i < c.size(); i++)
a[i] = c[i] - '';
do {
x = xchushi;
y = ychushi;
for (int i = ; i < c.size(); i++) {
if (a[i] == shu[])
x--;
else if (a[i] == shu[])
x++;
else if (a[i] == shu[])
y--;
else y++;
if(x < || y < || x >= n || y >= m)//x最初代表上下,所以要和n比较;y代表左右,所以要和m比较,z
break;
if (s[x][y] == 'E') {
f++;
break;
}
if (s[x][y] == '#')
break;
}
cnt += f;
f = ;
} while (next_permutation(shu, shu + ));
cout << cnt << endl;
return ;
}
有一点要说的是自己总是会犯很多小细节上的错误,昨天的训练赛还有今早上这个题,就可以看出来,可能是自己思考问题不条理,很多应该想到的问题都没有想到,小细节的处理上也不够到位,分情况讨论之类的也不到位,以后一定要改正。
最新文章
- js:使用js过程中遇到的一个小问题
- ANGULAR $HTTP请求【转】
- SQL分页
- Google Dapper-大规模分布式系统的基础跟踪设施
- M1M2总结
- Yosemite 升级后第三方SSD TRIM失败不能进入系统处理
- WCF分分钟入门
- undercore &; Backbone对AMD的支持(Require.js中如何使用undercore &; Backbone)
- SLF4J warning or error messages and their meanings(转)
- jq屏蔽f5
- ASP.NET Core教程【二】从保存数据看特有属性与服务端验证
- CMD命令操作MySql数据库详解
- 读《31天学会CRM项目开发》记录4 - WEB服务配置
- CDI services--Event(事件)
- 【速读】——Shangxuan Tian——【ICCV2017】WeText_Scene Text Detection under Weak Supervision
- NFS, web,负载均衡,Nginx yum 源码安装
- Unity Awards 2018最佳资源
- Spring Boot入门(2)使用MySQL数据库
- Nginx 配置下载附件让浏览器提示用户是否保存
- 搭建Google镜像网站