首页 > 代码库 > 周游列国(简单枚举)
周游列国(简单枚举)
周游列国
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。
示例输入
RDDDDLRRRRUU5 5S111122#2233#4456#7756777
示例输出
Yes
提示
来源
示例程序
#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { int n,m,i,j; int x,y; char str[110]; char map[110][110]; int vis[10010]; int flag; scanf("%s",str); memset(map,'#',sizeof(map)); memset(vis,0,sizeof(vis)); scanf("%d %d",&n,&m); for(i=0; i<n; i++) { scanf("%s",map[i]);//一开始二维输入的然后一直wa,后来改成这种输入就对了,不知道为啥 for(j=0; j<m; j++) { if(map[i][j]=='S')//记录初始的坐标 { x=i; y=j; } } getchar();//不要忘记 } int cnt=0; int x1=x; int y1=y; while(str[cnt]!='\0') { i=x1;//记录前一步的坐标 j=y1; switch(str[cnt++]) { case'L': y1--; break; case'R': y1++; break; case'U': x1--; break; case'D': x1++; break; } if(map[x1][y1]=='#')//如果碰到#就返回到前一步 { x1=i; y1=j; continue; } if(map[x1][y1]>='1'&&map[x1][y1]<='7') { vis[map[x1][y1]-'0']=1; } } flag=0; for(i=0; i<n; i++) for(j=0; j<m; j++) { if(map[i][j]!='#'&&map[i][j]!='S') { if(vis[map[i][j]-'0']==0) { flag=1; break; } } } if(flag) printf("No\n"); else printf("Yes\n"); return 0; }
周游列国(简单枚举)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。