zoukankan      html  css  js  c++  java
  • UVa-227

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    void f(char a,int &xx,int &yy)
    {
        if(a=='A') xx=-1,yy=0;
        else if(a=='B') xx=1,yy=0;
        else if(a=='R') xx=0,yy=1;
        else if(a=='L') xx=0,yy=-1;
    }
    int main()
    {
        //freopen("in.txt","r",stdin);
        //freopen("out.txt","w",stdout);
        char a[10][10]={};
        int cnt=0;
        while(gets(a[1]+1)&&a[1][1]!='Z')
        {
            ++cnt;
            if(cnt>1) printf("
    ");
            printf("Puzzle #%d:
    ",cnt);
            for(int i=2;i<=5;i++)
                gets(a[i]+1);
            int x,y;
            for(int i=1;i<=5;i++)
                for(int j=1;j<=5;j++)
                    if(a[i][j]==' ')
                        x=i,y=j;
            char b[100]={};
            cin.getline(b,100,'0');
            getchar();
            bool flag=1;
            for(int i=0;b[i]!='';i++)
            {
                if(b[i]=='
    ') continue;
                int xx=0,yy=0;
                f(b[i],xx,yy);
                if(a[x+xx][y+yy]=='')
                {
                    flag=0;
                    printf("This puzzle has no final configuration.
    ");
                    break;
                }
                char t=a[x+xx][y+yy];
                a[x+xx][y+yy]=a[x][y];
                a[x][y]=t;
                x=x+xx,y=y+yy;
            }
            if(flag)
            {
                for(int i=1;i<=5;i++)
                {
                    printf("%c",a[i][1]);
                    for(int j=2;j<=5;j++)
                        printf(" %c",a[i][j]);
                    printf("
    ");
                }
            }
            memset(a,0,sizeof(a));
        }
    }
    

    上面的读取操作指令的方式是先全部存下来,下面是另外一种方法–一个一个字符地读。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    void f(char a,int &xx,int &yy)
    {
        if(a=='A') xx=-1,yy=0;
        else if(a=='B') xx=1,yy=0;
        else if(a=='R') xx=0,yy=1;
        else if(a=='L') xx=0,yy=-1;
    }
    int main()
    {
        //freopen("in.txt","r",stdin);
        //freopen("out.txt","w",stdout);
        char a[10][10]={};
        int cnt=0;
        while(gets(a[1]+1)&&a[1][1]!='Z')
        {
            ++cnt;
            if(cnt>1) printf("
    ");
            printf("Puzzle #%d:
    ",cnt);
            for(int i=2;i<=5;i++)
                gets(a[i]+1);
            int x,y;
            for(int i=1;i<=5;i++)
                for(int j=1;j<=5;j++)
                    if(a[i][j]==' ')
                        x=i,y=j;
            char b;
            while(1)
            {
                b=getchar();
                if(b=='0') break;
                else if(b=='
    ') continue;
                int xx=0,yy=0;
                f(b,xx,yy);
                if(a[x+xx][y+yy]=='')
                {
                    printf("This puzzle has no final configuration.
    ");
                    break;
                }
                char t=a[x+xx][y+yy];
                a[x+xx][y+yy]=a[x][y];
                a[x][y]=t;
                x=x+xx,y=y+yy;
            }
            if(b=='0')
            {
                for(int i=1;i<=5;i++)
                {
                    printf("%c",a[i][1]);
                    for(int j=2;j<=5;j++)
                        printf(" %c",a[i][j]);
                    printf("
    ");
                }
            }
            else while(getchar()!='0'){}
            getchar();
            memset(a,0,sizeof(a));
        }
    }
  • 相关阅读:
    pandas高效实现条件逻辑
    Python教程:文件、异常处理和其他
    最终初学者指南,以数据科学用例赢得分类黑客马拉松
    用Nvidia Jetson Nano 2GB和Python构建一个价值60美元的人脸识别系统
    一幅图像能顶16x16字!——用于大规模图像缩放识别的变压器(对ICLR 2021年论文的简要回顾)
    接缝雕刻算法:一种看似不可能的图像大小调整方法
    apache与nginx的优缺点的比较
    php5与php7的区别
    git基本的命令大全
    redis和membercache的区别
  • 原文地址:https://www.cnblogs.com/windrises/p/4653060.html
Copyright © 2011-2022 走看看