zoukankan      html  css  js  c++  java
  • URAL 1008

    坑爹题,两种输入输出互相交换,裸bfs

    #include <stdio.h>
    #include <string.h>
    typedef struct
    {
        int x;
        int y;
    } point;
    point q[310];
    
    int vis[15][15],mat[15][15];
    int dx[4]= {1,0,-1,0};
    int dy[4]= {0,1,0,-1};
    char ans[5]= {"RTLB"};
    
    int bfs1(int x,int y)
    {
        int front=0,rear=0;
        q[rear].x=x;
        q[rear].y=y;
        rear++;
        while(front<rear)
        {
            int u=q[front].x;
            int v=q[front].y;
            for(int i=0; i<4; i++)
            {
                int xx=u+dx[i];
                int yy=v+dy[i];
                if(mat[xx][yy]&&!vis[xx][yy]&&xx>0&&xx<=10&&yy>0&&yy<=10)
                {
                    printf("%c",ans[i]);
                    vis[xx][yy]=1;
                    q[rear].x=xx;
                    q[rear].y=yy;
                    rear++;
                }
            }
            front++;
            if(front==rear)
                printf(".
    ");
            else
                printf(",
    ");
        }
    }
    int bfs2(int x,int y)
    {
        int front=0,rear=0;
        char s[10];
        q[rear].x=x;
        q[rear].y=y;
        rear++;
        while(front<rear)
        {
            int u=q[front].x;
            int v=q[front].y;
            scanf("%s",s);
            for(int i=0;i<strlen(s)-1;i++)
            {
                for(int j=0;j<4;j++)
                if(s[i]==ans[j])
                {
                    int xx=u+dx[j];
                    int yy=v+dy[j];
                    mat[xx][yy]=1;
                    q[rear].x=xx;
                    q[rear].y=yy;
                    rear++;
                }
            }
            front++;
        }
        int ct=0;
        for(int i=1;i<=10;i++)
        {
            for(int j=1;j<=10;j++)
                if(mat[i][j])ct++;
        }
        printf("%d
    ",ct);
        for(int i=1;i<=10;i++)
        {
            for(int j=1;j<=10;j++)
                if(mat[i][j])
                printf("%d %d
    ",i,j);
        }
    }
    int main()
    {
        int n,x,y,k;
        memset(mat,0,sizeof(mat));
        memset(vis,0,sizeof(vis));
        while(scanf("%d",&n)==1)
        {
            int a;
            if(getchar()=='
    ')
            {
                while(n--)
                {
                    scanf("%d%d",&x,&y);
                    mat[x][y]=1;
                }
                for(int i=1; i<=10; i++)
                {
                    for(int j=1; j<=10; j++)
                    {
                        if(mat[i][j]&&!vis[i][j])
                        {
                            vis[i][j]=1;
                            printf("%d %d
    ",i,j);
                            bfs1(i,j);
                        }
                    }
                }
            }
            else
            {
                scanf("%d",&k);
                mat[n][k]=1;
                bfs2(n,k);
            }
    
        }
    
        return 0;
    }
    


  • 相关阅读:
    如何解决加载动态链接库DLL失败,返回0,GetLastError返回错误码126
    如何实现点击激活窗体同时窗体不跑到最前覆盖其他窗体
    数据库04
    数据库03
    数据库02
    数据库01
    Linux02
    Linux01
    软件质量
    HTML04
  • 原文地址:https://www.cnblogs.com/aukle/p/3231117.html
Copyright © 2011-2022 走看看