UVA-227

    xiaoxiao2026-04-20  2

    Solution:

    #include<cstdio> #include<cstring> #include<iostream> using namespace std; typedef struct {     int x,y; } point; int main() {     int count = 0;     while(1)     {         bool flag;         int i,j;         char pu[6][6]= {0}; //    for(i=0; i<5; i++) //        for(j=0; j<5; j++) //            scanf("%c",pu[5][5]); ///     %c会读取回车进入字符串中 ///     A--above,B--below,L--left,R--right //        for(i=0; i<6; i++) //            for(j=0; j<6; j++) //                cin>>pu[i][j];         gets(pu[0]);if(pu[0][0]=='Z') break;         gets(pu[1]),gets(pu[2]),gets(pu[3]),gets(pu[4]);         count++; ///输入         if(count>1) cout<<endl;         cout<<"Puzzle #"<<count<<":"<<endl;         point b;         for(i=0; i<5; i++)         {             for(j=0; j<5; j++)                 if(pu[i][j]==' ')                 {                     b.x=i,b.y=j;                     break;                 }         } ///判断空格位置并记录         flag = true;         char option;         while(~scanf("%c",&option))         {             if(option=='0') break;             else switch(option)                 {                 case 'A':                     if(b.x==0) flag = false;                     else                     {                         pu[b.x][b.y]   = pu[b.x-1][b.y];                         pu[b.x-1][b.y] = ' ';                         b.x = b.x-1;                     } //                        cout<<b.x<<"  "<<b.y<<endl;                     break;                 case 'B':                     if(b.x==4) flag = false;                     else                     {                         pu[b.x][b.y]   = pu[b.x+1][b.y];                         pu[b.x+1][b.y] = ' ';                         b.x = b.x+1;                     } //                        cout<<b.x<<"  "<<b.y<<endl;                     break;                 case 'L':                     if(b.y==0) flag = false;                     else                     {                         pu[b.x][b.y]   = pu[b.x][b.y-1];                         pu[b.x][b.y-1] = ' ';                         b.y = b.y-1;                     } //                        cout<<b.x<<"  "<<b.y<<endl;                     break;                 case 'R':                     if(b.y==4) flag = false;                     else                     {                         pu[b.x][b.y]   = pu[b.x][b.y+1];                         pu[b.x][b.y+1] = ' ';                         b.y = b.y+1;                     } //                        cout<<b.x<<"  "<<b.y<<endl;                     break;                 default :                     continue;                 } //            cout<<"continue"<<endl;         }         if(flag == false) cout<<"This puzzle has no final configuration."<<endl;         else         {             for(i=0; i<5; i++)             {                 for(j=0; j<4; j++)                     printf("%c ",pu[i][j]);                 printf("%c\n",pu[i][j]);             }         }         getchar();     }     return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-1309036.html
    最新回复(0)