标签:style http io ar color sp java for on
大家都知道孔子吧,春秋战国时候的一个老头儿。当时出国还不用护照,所以他经常赶着牛车带着弟子们周游列国。可是这路也并不是那么好走的,当遇到高山时孔子他们就得绕着走了,你得考虑他牛车的实力能不能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; }
标签:style http io ar color sp java for on
原文地址:http://blog.csdn.net/u013486414/article/details/41393191