题意:
类似于5X5的拼图 路线轨迹
1.走向
A上 B下 L左 R右
2.如果走出边界则 输出 print字符串语句
3.遇到输入Z则结束程序
4.格式是坑点 如图
printf("%c",'0');
%d表示0是0,表示‘0’是48
%c表示0是a,表示‘0’是0
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const char *print="This puzzle has no final configuration.";
int main (void)
{
char map[6][6],a[1000];
int cases=0;
while(gets(map[0]))
{
int flag=0;
if(map[0][0]=='Z') break;
for(int i=1; i<=4; i++)
{
gets(map[i]);
}
int x,y;
for(int i=0; i<=4; i++)
for(int ii=0; ii<=4; ii++)
if(map[i][ii]==' ')
{
x=i;
y=ii;
}
int i=0;
while(~scanf("%c",&a[i]))
{
if(a[i]!='0') i++;
else break;
}
a[i]=0;
getchar();
//printf("%c",'0');//%d表示0是0,表示‘0’是48 %c表示0是a,表示‘0’是0
int nx=x,ny=y;
for(i=0; a[i]; i++)
{
switch(a[i])
{
case 'A':
nx=x-1;
break;
case 'B':
nx=x+1;
break;
case 'L':
ny=y-1;
break;
case 'R':
ny=y+1;
break;
}
if(nx<0||nx>4||ny<0||ny>4)
{
flag=1;
break;
}
else
{
map[x][y]=map[nx][ny];
map[nx][ny]=' ';
x=nx;
y=ny;
}
}
if(cases++) printf("\n");
printf("Puzzle #%d:\n",cases);
if(flag==1)
{
puts(print);
}
else
{
for(int i=0; i<=4; i++)
{
printf("%c",map[i][0]);
for(int ii=1; ii<=4; ii++)
printf(" %c",map[i][ii]);
printf("\n");
}
}
}
return 0;
}