给空格子上下左右的互换操作,问最后是怎样的
注意一行的最后一个若是空格,需要自己加
注意读取时 操作可能分好多行,一定要读取到 0 为止1 #include2 #include 3 using namespace std; 4 char map[50][50],op[1000],c,tmp; 5 int k,t,x,y,cnt; 6 bool flag; 7 void fuc() 8 { 9 flag=1; 10 for(int i=0;op[i]!='0';i++) 11 { 12 if(flag==0) break; 13 else if(op[i]=='A') 14 { 15 if(x-1>=0) 16 { 17 tmp=map[x-1][y]; 18 map[x-1][y]=' '; 19 map[x][y]=tmp; 20 x--; 21 } 22 else flag=0; 23 } 24 else if(op[i]=='B') 25 { 26 if(x+1<=4) 27 { 28 tmp=map[x+1][y]; 29 map[x+1][y]=' '; 30 map[x][y]=tmp; 31 x++; 32 } 33 else flag=0; 34 } 35 else if(op[i]=='R') 36 { 37 if(y+1<=4) 38 { 39 tmp=map[x][y+1]; 40 map[x][y+1]=' '; 41 map[x][y]=tmp; 42 y++; 43 } 44 else flag=0; 45 } 46 else if(op[i]=='L') 47 { 48 if(y-1>=0) 49 { 50 tmp=map[x][y-1]; 51 map[x][y-1]=' '; 52 map[x][y]=tmp; 53 y--; 54 } 55 else flag=0; 56 } 57 } 58 } 59 int main() 60 { 61 k=1; 62 while(gets(map[0])) 63 { 64 if(map[0][0]=='Z'&&map[0][1]=='\0') break; 65 for(int i=1;i<5;i++) gets(map[i]); 66 for(int i=0;i<5;i++) 67 { 68 if(strlen(map[i])!=5) 69 { 70 map[i][4]=' '; 71 break; 72 } 73 } 74 cnt=0; 75 while(c=getchar()) 76 { 77 if(c<='Z'&&c>='A') op[cnt++]=c; 78 if(c=='0') 79 { 80 op[cnt++]=c; 81 getchar();break; //0 之后还有一个回车需要读取!! 82 } 83 } 84 for(int i=0;i<5;i++) 85 for(int j=0;j<5;j++) 86 if(map[i][j]==' ') 87 { 88 x=i;y=j; break; 89 } 90 fuc(); 91 if(k>1) puts(""); 92 printf("Puzzle #%d:\n",k++); 93 if(flag==0) puts("This puzzle has no final configuration."); 94 else 95 { 96 for(int i=0;i<5;i++) 97 { 98 for(int j=0;j<4;j++) 99 {100 printf("%c ",map[i][j]);101 }102 printf("%c\n",map[i][4]);103 }104 }105 }106 }107 /*108 TRGSJ109 XDOKI110 M VLN111 WPABE112 UQHCF113 ARRBBL0114 ABCDE115 FGHIJ116 KLMNO117 PQRS118 TUVWX119 AAA120 LLLL0121 ABCDE122 FGHIJ123 KLMNO124 PQRS125 TUVWX126 AAAAABBRRRLL0127 Z128 */