1. 程式人生 > 其它 >演算法入門經典P57-習題3-5(注意更新空白格的位置資訊)

演算法入門經典P57-習題3-5(注意更新空白格的位置資訊)

#include<iostream>
#include<cstring>
using namespace std;
char a[6][6];
int main(){
    int i,j,p,q;
    for(i=0;i<5;i++){
        scanf("%s",a[i]);
        a[i][5] = '\0';
    }
    for(i=0;i<5;i++)
        for(j=0;j<5;j++)
            if(a[i][j]=='*'){
                p = i;
                q 
= j; } char s[80]; scanf("%s",s); int len = strlen(s); bool flag = false; for(i=0;i<len-1;i++){ if(s[i]=='A'){ if(p==0){ flag = true; break; } a[p][q] = a[p-1][q]; a[p-1][q] = '*'; p
--; } if(s[i]=='B'){ if(p==4){ flag = true; break; } a[p][q] = a[p+1][q]; a[p+1][q] = '*'; p++; } if(s[i]=='L'){ if(q==0){ flag = true;
break; } a[p][q] = a[p][q-1]; a[p][q-1] = '*'; q--; } if(s[i]=='R'){ if(q==4){ flag = true; break; } a[p][q] = a[p][q+1]; a[p][q+1] = '*'; q++; } } if(flag){ printf("This puzzle has no final configuration.\n"); } else{ for(i=0;i<5;i++) printf("%s\n",a[i]); } return 0; }