您的位置:首页 > 其它

Uva-227 - Puzzle-AC

2015-01-27 18:32 351 查看
解体思路:二维数组储存原型,记录空格位置,按顺序移动,移动越界即为This puzzle has no final configuration.

注意:1、这个题输出格式卡的我老是WA,注意具体那个空行的位置

TRGSJ

XDOKI

M VLN

WPABE

UQHCF

ARRBBL0

Puzzle #1:

T R G S J

X O K L I

M D V B N

W P A E

U Q H C F

ABCDE

FGHIJ

KLMNO

PQRS

TUVWX

AAA

LLLL0

Puzzle #2:

A B C D

F G H I E

K L M N J

P Q R S O

T U V W X

ABCDE

FGHIJ

KLMNO

PQRS

TUVWX

AAAAABBRRRLL0

Puzzle #3:

This puzzle has no final configuration.

Z

Process returned 0 (0x0) execution time : 16.359 s

Press any key to continue.

2、这个题读取原型时,也应注意不要用scanf,因为有空格!

AC代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
int i,j,x,y,t=1,flag;
char a[10][10];
while(1)
{
flag=0;
for (i=0;i<5;i++)
{
for (j=0;j<5;j++)
{
a[i][j]=getchar();
if (a[0][0]=='Z') return 0;
if (a[i][j]==' ') {x=i; y=j;}
}
getchar();
}
char commd;
while((commd=getchar())&&commd!='0')
{
if (flag) continue;
if (commd=='A')
{
if (x==0) {flag=1;continue;}
a[x][y]=a[x-1][y];
a[x-1][y]=' ';
x--;
}
else if (commd=='B')
{
if (x==4) {flag=1;continue;}
a[x][y]=a[x+1][y];
a[x+1][y]=' ';
x++;
}
else if (commd=='L')
{
if (y==0) {flag=1;continue;}
a[x][y]=a[x][y-1];
a[x][y-1]=' ';
y--;
}
else if (commd=='R')
{
if (y==4) {flag=1;continue;}
a[x][y]=a[x][y+1];
a[x][y+1]=' ';
y++;
}
}
if (t-1) putchar('\n');
printf("Puzzle #%d:\n",t++);
if (!flag)
{
for (i=0;i<5;i++)
{
for (j=0;j<5;j++)
{
if (!j) printf("%c",a[i][j]);
else printf(" %c",a[i][j]);
}
putchar('\n');
}
}
else
printf("This puzzle has no final configuration.\n");
getchar();
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: