SDUT OJ 1598 周游列国
周游列国
Time Limit: 1000ms Memory limit: 32768K 有疑问?点这里^_^
题目描述
大家都知道孔子吧,春秋战国时候的一个老头儿。当时出国还不用护照,所以他经常赶着牛车带着弟子们周游列国。可是这路也并不是那么好走的,当遇到高山时孔子他们就得绕着走了,你得考虑他牛车的实力能不能hold住啊。当然,孔子是个很聪明的人,每次出门前都会四处打听,然后制定出一个赶车路线,然后按照路线去走。但是,由于很多路没有亲自走过他也不确定按这个路线到底能不能周游列国?然而,你有当时的地图,希望你编程判断一下按照孔子的行车路线能不能周游列国。
输入
第一行是行车路线即一个字符串只包含L,R,U和D分别代表左走,右走,上走,下走。接下来以上是两个整数H和W,0 < H,W < 20, 代表地图的高和宽。然后是H*W的地图。S代表孔子的起点。标有1~7的区域分别代表7个国家的领土,#代表高山。
输出
如果孔子能周游列国即经过这7个国家则输出Yes,否则输出No。
示例输入
RDDDDLRRRRUU
5 5
S1111
22#22
33#44
56#77
56777
示例输出
Yes 分析:此题目好坑,需要注意的是 如果给定的路线会经过 '#' 或者 'S' 应该怎样处理 ? 跳出直接输出No,还是,,,? 因为这个,我 WA 好几次!
正确的处理是:遇到'#',回退到上一步。遇到 'S',直接无视 continue 跳过就可以了!
代码:
#include <string.h>
#include <stdio.h>
#include <iostream>
#include <string>
#include <algorithm>
#include <math.h> using namespace std; char map[21][21]; int main()
{
int n, m;
char s[2000];
int len;
int i, j, k;
char ch; while(scanf("%s", s)!=EOF)
{
len = strlen(s);
//puts(s); cin>>n>>m;
int dd, ff;
int a[8];
memset(a, 0, sizeof(a)); for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
ch=getchar();
while(ch!='S' && ch!='#' )
{
if(ch>='1' && ch<='7')
{
//map[i][j]=ch;
break;
}
else
{
ch=getchar();
}
}
map[i][j]=ch; if(map[i][j]=='S')
{
dd=i;
ff=j;
}
}
} //puts(s); int flag=1; for(k=0; k<len; k++)
{
if( s[k]=='R' )
{
ff++;
if( ff>=0 && ff<m && (map[dd][ff]>='1' && map[dd][ff]<='7') )
{
a[map[dd][ff]-48]++;
continue;
}
else if(map[dd][ff]=='S')
continue;
else if(map[dd][ff]=='#' )
{
ff--;
} }
else if( s[k]=='L' )
{
ff--;
if( ff>=0 && ff<m && (map[dd][ff]>='1' && map[dd][ff]<='7') )
{ a[map[dd][ff]-48]++;
continue;
}
else if(map[dd][ff]=='S') continue;
else if(map[dd][ff]=='#') ff++; }
else if(s[k]=='U')
{
dd--;
if( dd>=0 && dd<n && (map[dd][ff]>='1' && map[dd][ff]<='7') )
{ a[map[dd][ff]-48]++;
continue;
}
else if(map[dd][ff]=='S') continue;
else if(map[dd][ff]=='#') dd++; }
else if(s[k]=='D' )
{
dd++;
if( (dd>=0 && dd<n) && (map[dd][ff]>='1' && map[dd][ff]<='7') )
{ a[map[dd][ff]-48]++;
continue;
}
else if(map[dd][ff]=='S')
continue;
else if(map[dd][ff]=='#')
dd--;
}
}
int w=1;
for(i=1; i<=7; i++)
{
if(a[i]==0)
{
w=0;
break;
}
}
if(w==0)
cout<<"No\n";
else
cout<<"Yes\n";
} return 0;
}
SDUT OJ 1598 周游列国的更多相关文章
- SDUT OJ 2607
/*http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2607*/ 题目大意:给出一个字符串,求出里 ...
- SDUT OJ 1221 亲和数 (找出某个数n所有的因子数,只需要暴力:2->sqrt(n) 即可 )
亲和数 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 如果a的因子和等于b,b的因子和等于a,且a≠b,则称a,b为亲和数对. ...
- SDUT OJ 图练习-BFS-从起点到目标点的最短步数 (vector二维数组模拟邻接表+bfs , *【模板】 )
图练习-BFS-从起点到目标点的最短步数 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 在古老的魔兽传说中,有两个军团,一个叫天 ...
- 【离散数学】 SDUT OJ 传递闭包 && memset 使用注意事项
传递闭包 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 已知有n头牛,m次战斗关系, ...
- SDUT OJ 2783 小P寻宝记
#include<iostream> #include<memory.h> #define N 10020 using namespace std; int dp[N],pi[ ...
- SDUT oj 3005 打怪升级(内存搜索)
当比赛一直纠缠骑2如何做一个非常大的数量,数组不开啊...后来他们发现自己很傻啊,该数不超过最大10什么,这个上限就是力量100什么.. .. 其它的就是记忆化搜索啊,还有就是加一点力量的瓶子当时就要 ...
- SDUT OJ 2463 学校password你必须学会科学计划
#include<iostream> #include<string.h> #include<stdio.h> #define N 10010 #define M ...
- SDUT oj 2610
/*题目大意:输入一序列n个数字,然后输入m个询问,每个询问包含左边区间和右边区间,还有a和b,问你这个区间内有几个数大于等于a且小于等于b 做法:树状数组,先求出这个区间内有几个数小于a,然后求这个 ...
- SDUT OJ 效率至上(线段树)
效率至上 Time Limit: 5000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 题意很简单,给出一个数目为n ...
随机推荐
- 做运动(Dijkstra+并查集+MST)
上面的题解是这样,这道题我真的脑残,其实打代码的时候就意识到了许多,可以用Dfs+Dij+二分,这样还可以卡一卡 但是我打了spfa+spfa+二分,这个显然很慢,类似的题目我好像还做过一道的,就是在 ...
- mysql语句优化方案(网上流传)
关于mysql处理百万级以上的数据时如何提高其查询速度的方法 最近一段时间由于工作需要,开始关注针对Mysql数据库的select查询语句的相关优化方法. 由于在参与的实际项目中发现当mysql表的数 ...
- iOS 设置RGB色的宏
转自:http://lizhuang.iteye.com/blog/1931768 //RGB Color macro #define UIColorFromRGB(rgbValue) [UICol ...
- 如何使用ftrace
基本使用 1. 编译内核 ref:http://www.omappedia.org/wiki/Installing_and_Using_Ftrace========================== ...
- JS 操作XML
loadXML = function(xmlFile) { var xmlDoc; if(window.ActiveXObject) { xmlDoc ...
- Java游戏服务器搭建
一.前言 此游戏服务器架构是一个单服的形式,也就是说所有游戏逻辑在一个工程里,没有区分登陆服务器.战斗服务器.世界服务器等.此架构已成功应用在了多款页游服务器 .在此框架中没有实现相关业务逻辑,只有简 ...
- 快速掌握RabbitMQ(一)——RabbitMQ的基本概念、安装和C#驱动
1 RabbitMQ简介 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现,官网地址:http://www.rabbitmq.com.Ra ...
- 2018 ICPC 沈阳网络预赛 Fantastic Graph (优先队列)
[传送门]https://nanti.jisuanke.com/t/31447 [题目大意]:有一个二分图,问能不能找到它的一个子图,使得这个子图中所有点的度数在区间[L,R]之内. [题解]首先我们 ...
- Answer's Question about pointer
When you create a new pointer, this will be in heap until you delete it. So what you said is sort o ...
- 创建es索引-格式化和非格式化
创建es索引-格式化和非格式化 学习了:https://www.imooc.com/video/15768 索引有结构化和非结构化的区分: 1, 先创建索引,然后POST修改mapping 首先创建索 ...