UVA227 Puzzle (字符串题)

来源:互联网 发布:大数据 计算机学报 编辑:程序博客网 时间:2024/06/14 00:33

代码非常清晰,考虑到所有的情况

学习这种写法

#include<stdio.h>#include<string.h>char str[10][10], Deal[3000];char ch;int ErrorFlag;int x,y;int Flag;int main(){    Flag=0;    while( (gets(str[0])) != NULL && strcmp(str[0],"Z") ){        ErrorFlag = 0;        for(int j = 0; j < strlen(str[0]); j++)            if(str[0][j] == ' ')            {                x=0;                y=j;            }        for(int i = 1; i < 5; i++ )        {            gets(str[i]);            for(int j = 0; j < strlen(str[i]); j++)                if(str[i][j] == ' ')                {                    x=i;                    y=j;                }        }        while(gets(Deal) != NULL)        {            if(ErrorFlag == 0)            {                for(int i = 0 ; i < strlen(Deal); i++)                {                    if(Deal[i] == 'A')                    {                        if(x == 0)                        {                            ErrorFlag = 1;                            break;                        }                        ch = str[x][y];                        str[x][y] = str[x-1][y];                        str[x-1][y] = ch;                        x--;                    }                    if(Deal[i] == 'B')                    {                        if(x == 4)                        {                            ErrorFlag = 1;                            break;                        }                        ch = str[x][y];                        str[x][y] = str[x+1][y];                        str[x+1][y] = ch;                        x++;                    }                    if(Deal[i] == 'R')                    {                        if(y == 4)                        {                            ErrorFlag = 1;                            break;                        }                        ch = str[x][y];                        str[x][y] = str[x][y+1];                        str[x][y+1] = ch;                        y++;                    }                    if(Deal[i] == 'L')                    {                        if(y == 0)                        {                            ErrorFlag = 1;                            break;                        }                        ch = str[x][y];                        str[x][y] = str[x][y-1];                        str[x][y-1] = ch;                        y--;                    }                }            }            if(Deal[strlen(Deal) - 1] == '0') break;        }        if(Flag)            printf("\n");        printf("Puzzle #%d:\n", ++Flag);        if(ErrorFlag)        {            printf("This puzzle has no final configuration.\n");            continue;        }        for(int i = 0; i < 5; i++)        {            for(int j=0; j < 5; j++)            {                if(j)                    printf(" ");                printf("%c", str[i][j]);            }            printf("\n");        }    }    return 0;}


0 0
原创粉丝点击