Uva 227 Puzzle

来源:互联网 发布:三益钢琴js 600na图片 编辑:程序博客网 时间:2024/05/16 13:43

水平真是太低了,这个水题做了两个小时才过。
先是莫名其妙的第二个矩阵错误,找了好久原因,原来是要处理换行符。还有格式错误,原文没仔细看啊。
路漫漫其修远兮。。。

#include<stdio.h>int main(){int rank = 1;while(true){ char nums[5][5];int i, j;int blanki, blankj;for(i = 0; i < 5; i ++){for(j = 0; j < 5; j ++){scanf("%c", &nums[i][j]);if(nums[0][0] == 'Z') return 0;if(nums[i][j] == ' '){blanki = i;blankj = j;}}char c;scanf("%c", &c);}char move;bool legal = true;while(scanf("%c", &move) && move != '0'){if(legal){switch(move){case 'A':if(blanki == 0)legal = false;else{nums[blanki][blankj] = nums[blanki - 1][blankj];nums[blanki - 1][blankj] = ' ';blanki = blanki - 1;}break;case 'B':if(blanki == 4)legal = false;else{nums[blanki][blankj] = nums[blanki + 1][blankj];nums[blanki + 1][blankj] = ' ';blanki = blanki + 1;}break;case 'L':if(blankj == 0)legal = false;else{nums[blanki][blankj] = nums[blanki][blankj - 1];nums[blanki][blankj - 1] = ' ';blankj = blankj - 1;}break;case 'R':if(blankj == 4)legal = false;else{nums[blanki][blankj] = nums[blanki][blankj + 1];nums[blanki][blankj + 1] = ' ';blankj = blankj + 1;}break;default:break;}}}char c;scanf("%c", &c);if(rank != 1)printf("\n");printf("Puzzle #%d:\n", rank++);if(!legal)printf("This puzzle has no final configuration.\n");else{for(i = 0; i < 5; i ++){for(j = 0; j < 5; j ++){printf("%c", nums[i][j]);if(j != 4)printf(" ");elseprintf("\n");}}}}return 0;}

0 0