题目描述:算法竞赛入门经典习题3-5

谜题 (Puzzle,ACM/ICPC World Finals 1993,UVa227)-LMLPHP

题目思路:模拟题

#include <stdio.h>
#include <string.h>
#define maxn 55
char gird[maxn][maxn] ;
char cmd[maxn] ;
int blank_x,blank_y ;
int main(int argc, char *argv[])
{ int flag = ;
for(int i=;i<;i++)
gets(gird[i]) ;
for(int i=;i<;i++)
for(int j=;j<;j++)
if(gird[i][j]==' '){
blank_x = i;
blank_y = j;
}
while(gets(cmd)){
int len = strlen(cmd) ;
for(int i=;i<len;i++){
if(cmd[len-] == '' || cmd[i] == 'A' || cmd[i] == 'R' || cmd[i] == 'B' || cmd[i] == 'L' ){
if(cmd[i] == 'A' && blank_x != )
{
gird[blank_x][blank_y] = gird[blank_x-][blank_y];
gird[--blank_x][blank_y] = ' ';
}
if(cmd[i] == 'R' && blank_y != )
{
gird[blank_x][blank_y] = gird[blank_x][blank_y+];
gird[blank_x][++blank_y] = ' ';
}
if(cmd[i] == 'B' && blank_x != )
{
gird[blank_x][blank_y] = gird[blank_x+][ blank_y];
gird[++blank_x][ blank_y] = ' ';
}
if(cmd[i] == 'L' && blank_y != )
{
gird[blank_x][blank_y] = gird[blank_x][ blank_y-];
gird[blank_x][--blank_y] = ' ';
} }
else flag = ;
}
if(flag)
{
for(int i = ; i < ; i++)
{
printf("%c %c %c %c %c\n", gird[i][], gird[i][], gird[i][], gird[i][], gird[i][]);
}
}
else
printf("This puzzle has no final configuration.\n"); }
return ;
}
05-11 11:05
查看更多