【宽搜】BAPC2014 J Jury Jeopardy (Codeforces GYM 100526)
题目链接:
http://codeforces.com/gym/100526
http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11673&courseid=0
题目大意:
一个机器人一开始位于迷宫入口,面朝东,接下来按照右前左后的顺序遍历迷宫,如果有墙'#'就执行下一个方向
直到找到一个是路'.'的方向并且往那个方向移动一格,并改为面朝该方向。
现在给你机器人右前左后的字符数组,求原来的地图,数据保证没有不能遍历的点。最顶端,右端和下端都应该有一层墙壁'#'。
数据保证最后机器人回到起点。地图大小不超过100x100
题目思路:
【宽搜】
选定起点(我选的是200,200)然后开始按照字符串中的方向字符走,并且把这个点覆盖成路'.'。接着改变朝向。
做的过程中记录到达的边界大小,最后按边界输出地图即可。
1 // 2 //by coolxxx 3 //#include<bits/stdc++.h> 4 #include<iostream> 5 #include<algorithm> 6 #include<string> 7 #include<iomanip> 8 #include<map> 9 #include<memory.h> 10 #include<time.h> 11 #include<stdio.h> 12 #include<stdlib.h> 13 #include<string.h> 14 //#include<stdbool.h> 15 #include<math.h> 16 #define min(a,b) ((a)<(b)?(a):(b)) 17 #define max(a,b) ((a)>(b)?(a):(b)) 18 #define abs(a) ((a)>0?(a):(-(a))) 19 #define lowbit(a) (a&(-a)) 20 #define sqr(a) ((a)*(a)) 21 #define swap(a,b) ((a)^=(b),(b)^=(a),(a)^=(b)) 22 #define mem(a,b) memset(a,b,sizeof(a)) 23 #define eps (1e-8) 24 #define J 10 25 #define mod 1000000007 26 #define MAX 0x7f7f7f7f 27 #define PI 3.14159265358979323 28 #define N 504 29 #define M 10000004 30 using namespace std; 31 typedef long long LL; 32 int cas,cass; 33 int n,m,lll,ans; 34 int l,r,u,d; 35 char s[M]; 36 int dx[]={0,-1,0,1}; 37 int dy[]={1,0,-1,0}; 38 int R[]={3,0,1,2},F[]={0,1,2,3},L[]={1,2,3,0},B[]={2,3,0,1}; 39 char mapp[N][N]; 40 void print() 41 { 42 int i,j; 43 printf("%d %d\n",d-u+3,r-l+2); 44 for(i=u-1;i<=d+1;i++) 45 { 46 for(j=l;j<=r+1;j++) 47 printf("%c",mapp[i][j]); 48 puts(""); 49 } 50 } 51 int main() 52 { 53 #ifndef ONLINE_JUDGE 54 // freopen("1.txt","r",stdin); 55 // freopen("2.txt","w",stdout); 56 #endif 57 int i,j,k; 58 int x,y,way; 59 // for(scanf("%d",&cas);cas;cas--) 60 // for(scanf("%d",&cas),cass=1;cass<=cas;cass++) 61 // while(~scanf("%s",s+1)) 62 // while(~scanf("%d",&n)) 63 scanf("%d",&cas); 64 printf("%d\n",cas); 65 while(cas--) 66 { 67 scanf("%s",s); 68 for(i=0;i<N;i++) 69 for(j=0;j<N;j++) 70 mapp[i][j]='#'; 71 n=strlen(s); 72 r=l=u=d=200,x=200,y=200;way=0; 73 mapp[x][y]='.'; 74 for(i=0;i<n;i++) 75 { 76 if(s[i]=='R') 77 { 78 way=R[way]; 79 x+=dx[way]; 80 y+=dy[way]; 81 mapp[x][y]='.'; 82 } 83 else if(s[i]=='F') 84 { 85 way=F[way]; 86 x+=dx[way]; 87 y+=dy[way]; 88 mapp[x][y]='.'; 89 } 90 else if(s[i]=='L') 91 { 92 way=L[way]; 93 x+=dx[way]; 94 y+=dy[way]; 95 mapp[x][y]='.'; 96 } 97 else if(s[i]=='B') 98 { 99 way=B[way]; 100 x+=dx[way]; 101 y+=dy[way]; 102 mapp[x][y]='.'; 103 } 104 u=min(u,x);d=max(d,x);l=min(l,y);r=max(r,y); 105 } 106 print(); 107 } 108 return 0; 109 } 110 /* 111 // 112 113 // 114 */