UVa - 227 - Puzzle

Posted nicetomeetu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVa - 227 - Puzzle相关的知识,希望对你有一定的参考价值。

给空格子上下左右的互换操作,问最后是怎样的

注意一行的最后一个若是空格,需要自己加
注意读取时 操作可能分好多行,一定要读取到 0 为止

  1 #include <iostream>
  2 #include <cstring>
  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 TRGSJ
109 XDOKI
110 M VLN
111 WPABE
112 UQHCF
113 ARRBBL0
114 ABCDE
115 FGHIJ
116 KLMNO
117 PQRS
118 TUVWX
119 AAA
120 LLLL0
121 ABCDE
122 FGHIJ
123 KLMNO
124 PQRS
125 TUVWX
126 AAAAABBRRRLL0
127 Z
128 */

 

以上是关于UVa - 227 - Puzzle的主要内容,如果未能解决你的问题,请参考以下文章

uva 227 Puzzle (UVA - 227)

UVa - 227 - Puzzle

Uva 227-Puzzle 解题报告

习题3-5 Puzzle UVA - 227

Puzzle UVA - 227

UVa227 -- puzzle