Gym - 101512J -模拟 4000 -Jury Jeopardy
2017-09-25 21:21
381 查看
https://vjudge.net/problem/Gym-101512J
按题意模拟。
给定一个机器人。开始方向为->.
给定四个单词代表前进方向,前进的时候头也会跟着变。从初始点出发最后一定会回来,问你输出他的路径。
(考虑到最后一定会回来,那么直接模拟就好了。其实回来不回来都无所谓。)
开的数组大一点。然后直接暴力。
按题意模拟。
给定一个机器人。开始方向为->.
给定四个单词代表前进方向,前进的时候头也会跟着变。从初始点出发最后一定会回来,问你输出他的路径。
(考虑到最后一定会回来,那么直接模拟就好了。其实回来不回来都无所谓。)
开的数组大一点。然后直接暴力。
#include<bits/stdc++.h> using namespace std; const int maxn=500; bool a[maxn][maxn]; int ff; int fx[5][2]={{0,0},{0,1},{1,0},{0,-1},{-1,0}}; //int fx[5][2]{{0,0},{0,1},{1,0},{0,-1},{-1,0}}; int solve(string s){ ff=1; int x=105; int y=105; a[x][y]=true; for(int i=0;i<s.length();i++){ if(s[i]=='F'){ a[x+fx[ff][0]][y+fx[ff][1]]=true; x+=fx[ff][0]; y+=fx[ff][1]; //cout<<fx[ff][0]<<" "<<fx[ff][1]<<endl; } else if(s[i]=='B'){ a[x-fx[ff][0]][y-fx[ff][1]]=true; x-=fx[ff][0]; y-=fx[ff][1]; if(ff==1) ff=3; else if(ff==2) ff=4; else if(ff==3) ff=1; else if(ff==4) ff=2; //cout<<fx[ff][0]<<" "<<fx[ff][1]<<endl; } else if(s[i]=='R'){ if(ff==1) ff=2; else if(ff==2) ff=3; else if(ff==3) ff=4; else if(ff==4) ff=1; a[x+fx[ff][0]][y+fx[ff][1]]=true; x+=fx[ff][0]; y+=fx[ff][1]; //cout<<fx[ff][0]<<" "<<fx[ff][1]<<endl; } else if(s[i]=='L'){ if(ff==1) ff=4; else if(ff==2) ff=1; else if(ff==3) ff=2; else if(ff==4) ff=3; a[x+fx[ff][0]][y+fx[ff][1]]=true; x+=fx[ff][0]; y+=fx[ff][1]; //cout<<fx[ff][0]<<" "<<fx[ff][1]<<endl; } } } bool ssx(int m){ for(int i=0;i<500;i++) if(a[m][i]) return false; return true; } bool ssy(int m){ for(int i=0;i<500;i++){ if(a[i][m]) return false; } return true; } int main() { int m; //freopen("F:\\eee\\ee.txt","w",stdout); string s; scanf("%d",&m); int cas=1; while(m--){ cin>>s; memset(a,false,sizeof(a)); solve(s); int lef,rig; int low,high; for(int i=105;i>=0;i--){ if(ssx(i)) {low=i;break;} } for(int i=105;i<500;i++){ if(ssx(i)) {high=i;break;} } for(int i=105;i>=0;i--){ if(ssy(i)) {lef=i;break;} } if(cas==1) printf("%d\n",m+1); for(int i=105;i<500;i++){ if(ssy(i)) {rig=i;break;} } printf("%d %d\n",high-low+1,rig-lef); for(int i=low;i<=high;i++){ for(int j=lef+1;j<=rig;j++){ if(a[i][j]) printf("."); else printf("#"); } cout<<endl; } cas++; } return 0; }
相关文章推荐
- 【宽搜】BAPC2014 J Jury Jeopardy (Codeforces GYM 100526)
- Gym 101190H Hard Refactoring (模拟坑题)
- 【模拟】BAPC2014 G Growling Gears (Codeforces GYM 100526)
- 【模拟】ECNA 2015 I What's on the Grille? (Codeforces GYM 100825)
- Gym - 101196B Foosball Dynasty【模拟】
- GYM-100952-Palindrome Again !!【模拟】
- BAPC2014 J&&HUNNU11590:Jury Jeopardy
- Gym - 101341M-简单模拟-Last Man Standing
- 【模拟】NEERC15 J Jump (Codeforces GYM 100851)
- 【模拟】ECNA 2015 I What's on the Grille? (Codeforces GYM 100825)
- UVaLive 6581 && Gym 100299B What does the fox say? (模拟+STL)
- codeforces Gym - 101190H——Hard Refactoring (模拟)
- Gym 100935B Weird Cryptography (模拟)
- Gym 100499I (数学 模拟)
- 4000 4,selenium 模拟鼠标操作 (悬浮和左键点击)
- 【模拟】NEERC15 J Jump(2015-2016 ACM-ICPC)(Codeforces GYM 100851)
- Codeforces Gym 101505(2016-2017 CTU Open Contest) D---群论、模拟
- gym 101190A Abbreviation (模拟)
- Gym 100962E Elvis Presley (二叉树模拟 + set)
- codeforces Gym - 101190J ——Jenga Boom(模拟)