UVA - 227 Puzzle
生活随笔
收集整理的這篇文章主要介紹了
UVA - 227 Puzzle
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
Puzzle
?UVA - 227?
題目傳送門
注意點:每兩個輸出點間有一個換行,但最后一個輸出無換行
惡心模擬題,很卡輸入輸出!!!
AC代碼1:(自己的代碼,提交時需要選擇C++11)
#include <cstdio> #include <iostream> #include <algorithm> #include <cmath> #include <cstdlib> #include <cstring> #include <map> #include <stack> #include <queue> #include <vector> #include <bitset> #include <set> #include <utility> #include <sstream> #include <iomanip> using namespace std; typedef long long ll; typedef unsigned long long ull; #define inf 0x3f3f3f3f #define rep(i,l,r) for(int i=l;i<=r;i++) #define lep(i,l,r) for(int i=l;i>=r;i--) #define ms(arr) memset(arr,0,sizeof(arr)) //priority_queue<int,vector<int> ,greater<int> >q; const int maxn = (int)1e5 + 5; const ll mod = 1e9+7; char mapp[1000][1000]; bool xian(int x,int y) {if(x<0||y<0||x>=5||y>=5)return false;return true; } int main() {#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);#endif//freopen("out.txt", "w", stdout);ios::sync_with_stdio(0),cin.tie(0);int cnt=0;while(1) {ms(mapp);gets(mapp[0]);if(mapp[0][0]=='Z')break;cnt++;if(cnt!=1) printf("\n");for(int i=1;i<5;i++)gets(mapp[i]);int sx,sy;for(int i=0;i<5;i++){for(int j=0;j<5;j++){if(mapp[i][j]==' '){sx=i;sy=j;}}}char c;bool ju=false;while((c=getchar())!='0'){if(c=='\n')continue;if(ju)continue;int dx,dy;switch(c){case 'A':{dx=sx-1;dy=sy;if(!xian(dx,dy))ju=true;else {mapp[sx][sy]=mapp[dx][dy];mapp[dx][dy]=' ';sx=dx;sy=dy;break;}}case 'B':{dx=sx+1;dy=sy;if(!xian(dx,dy))ju=true;else {mapp[sx][sy]=mapp[dx][dy];mapp[dx][dy]=' ';sx=dx;sy=dy;break;}}case 'R':{dx=sx;dy=sy+1;if(!xian(dx,dy))ju=true;else {mapp[sx][sy]=mapp[dx][dy];mapp[dx][dy]=' ';sx=dx;sy=dy;break;}}case 'L':{dx=sx;dy=sy-1;if(!xian(dx,dy))ju=true;else {mapp[sx][sy]=mapp[dx][dy];mapp[dx][dy]=' ';sx=dx;sy=dy;break;}}}}c=getchar();printf("Puzzle #%d:\n",cnt);if(ju)printf("This puzzle has no final configuration.\n");else {for(int i=0;i<5;i++){for(int j=0;j<4;j++){printf("%c ",mapp[i][j]);}printf("%c\n",mapp[i][4]);}}}return 0; }AC代碼2:(大佬的代碼。。。)
? #include <cstdio> #include <iostream> #include <algorithm> #include <cmath> #include <cstdlib> #include <cstring> #include <map> #include <stack> #include <queue> #include <vector> #include <bitset> #include <set> #include <utility> #include <sstream> #include <iomanip> using namespace std; typedef long long ll; typedef unsigned long long ull; #define inf 0x3f3f3f3f #define rep(i,l,r) for(int i=l;i<=r;i++) #define lep(i,l,r) for(int i=l;i>=r;i--) #define ms(arr) memset(arr,0,sizeof(arr)) //priority_queue<int,vector<int> ,greater<int> >q; const int maxn = (int)1e5 + 5; const ll mod = 1e9+7; char block[5][5]; int x,y; int input() {for(int i=0;i<5;i++) {for(int j=0;j<5;j++) {reput:scanf("%c",&block[i][j]);if(i==0&&j==0&&block[0][0]=='Z')return 1;if(block[i][j]==13||block[i][j]==10)goto reput;if(block[i][j]==32){x=i;y=j;}}}return 0; } int move() {char ch;int flag=1;while((ch=getchar())!='0') {switch(ch) {case '\n':continue;case 'A':{if(x!=0) {block[x][y]=block[x-1][y];block[x-1][y]=' ';x--;}else {flag=0;}break;}case 'B':{if(x!=4) {block[x][y]=block[x+1][y];block[x+1][y]=' ';x++;}else {flag=0;}break;}case 'L':{if(y!=0) {block[x][y]=block[x][y-1];block[x][y-1]=' ';y--;} else {flag=0;}break;}case 'R':{if(y!=4) {block[x][y]=block[x][y+1];block[x][y+1]=' ';y++;}else {flag=0;}break;}}}return flag; } void output(int flag) {static int count=0;count++;if(count!=1)printf("\n");printf("Puzzle #%d:\n",count);if(flag){for(int i=0;i<5;i++){for(int j=0;j<4;j++){printf("%c ",block[i][j]);}printf("%c\n",block[i][4]);}}elseprintf("This puzzle has no final configuration.\n"); } int main() {#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);#endif//freopen("out.txt", "w", stdout);ios::sync_with_stdio(0),cin.tie(0);for(;;){int flag1=input();if(flag1)break;int flag2=move();output(flag2);}return 0; }??
總結
以上是生活随笔為你收集整理的UVA - 227 Puzzle的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网页搜索帮助-禁止搜索引擎收录的方法
- 下一篇: 【数学】Hunter’s Apprent