I'm working on this problem(Uva227).I've almost received correct results when I test the cases, but I've met a problem. I used function gets() to get a line from standard input, and store it in a[0]. but after the first input matrix, a[0] never changes anymore. What's wrong with it?
P.S. In Puzzle #2(i.e., the second input matrix), a[0] didn't changed, so I got a wrong answer. But if I put it first, it returned a correct output. So I think the algorithm is correct, but something went wrong when reading the first line.
English is not my native language; please excuse my syntax errors.
#include <stdio.h>
#include <string.h>
char a[5][5];
int main(){
    int _case = 1;
    char c;
    while(gets(a[0])){//Please focus on this line;it seems that a[0] never changed since first reading.
        if(a[0][0] == 'Z')  break;
        int blank_i, blank_j;
        for(int i = 0; i < 5; i++){
            if(i)   gets(a[i]);
            for(int j = 0; j < 5; j++){
                if(a[i][j] == ' '){
                     blank_i = i;
                     blank_j = j;
                }
            }
        }
        bool flag = true;
        int i = 0;
        while((c = getchar()) != '0'){
            switch(c){
                case 'A':
                    a[blank_i][blank_j] = a[blank_i - 1][blank_j];
                    a[--blank_i][blank_j] = ' ';    break;
                case 'B':
                    a[blank_i][blank_j] = a[blank_i + 1][blank_j];
                    a[++blank_i][blank_j] = ' ';    break;
                case 'L':
                    a[blank_i][blank_j] = a[blank_i][blank_j - 1];
                    a[blank_i][--blank_j] = ' ';    break;
                case 'R':
                    a[blank_i][blank_j] = a[blank_i][blank_j + 1];
                    a[blank_i][++blank_j] = ' ';    break;
                default:    break;
             }
        }
        //add a getchar() here will fix the problem.
        printf("Puzzle #%d:\n", _case);
        if(blank_i < 0 || blank_i > 4 || blank_j < 0 || blank_j >  4)
             printf("This puzzle has no final configuration.\n");
        else{
            for(int i = 0; i < 5; i++){
                for(int j = 0; j < 5; j++){
                    printf("%c ", a[i][j]);
                }
            printf("\n");
            }
        }
        printf("\n");
        _case++;
    }
    return 0;
}
 
     
    