您的位置:首页 > 其它

3.5 Puzzle UVA227

2017-11-30 09:34 344 查看
题目链接:点击打开链接

我当时取得函数名真奇葩

初始化二维数组我怎么会用getchar的,,,,难道是防空格吗,怎么着还有gets啊

#include <stdio.h>
#include <string.h>

char she[6][6];
int x, y;

int ope(int com);
void psh(int k, int kase);
void swash(int i1, int j1, int i2, int j2);

int main()
{
int kase;
for(kase = 1;; kase++)
{
int i, j, k = 1;
int c;

memset(she, '\0', sizeof(she));

for(i = 0; i < 5; i++)
for(j = 0; j < 6; j++)
{
she[i][j] = getchar();
if(she[0][0] == 'Z' && she[0][1] == '\n') return 0;
if(she[i][j] == ' ') {x = i; y = j;}
}

while((c = getchar()) != EOF && c != '0')
{
if(c != '\n' && ope(c)) {k = 0;break;}
}

if(kase > 1) printf("\n");
if(!k) for(;;) if((c = getchar()) == '0') break;

psh(k, kase); getchar();
}

return 0;
}

int ope(int com)
{
switch(com)
{
case 'A': x--;if(x < 0) return 1;swash(x, y, x + 1, y);break;
case 'L': y--;if(y < 0) return 1;swash(x, y, x, y + 1);break;
case 'R': y++;if(y > 4) return 1;swash(x, y, x, y - 1);break;
case 'B': x++;if(x > 4) return 1;swash(x, y, x - 1, y);break;
default :return 1;
}
return 0;
}

void swash(int i1, int j1, int i2, int j2)
{
int temp = she[i1][j1];
she[i1][j1] = she[i2][j2];
she[i2][j2] = temp;
}

void psh(int k, int kase)
{
int i, j;
if(k)
{
printf("Puzzle #%d:\n", kase);
for(i = 0; i < 5; i++)
for(j = 0; j < 5; j++)
{printf("%c",she[i][j]);printf((j == 4)?"\n":" ");}
}
else {printf("Puzzle #%d:\n", kase);printf("This puzzle has no final configuration.\n");}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: