• hdu5012 bfs


    比较简单的题 搜索4个方向,维护位子的值。

    #include<stdio.h>
    #include<string.h>
    #include<queue>
    using namespace std;
    int a[10],b[10];
    int vis[10][10][10][10][10][10];
    struct node
    {
        int x1,x2,x3,x4,x5,x6,step;
    };
    int bfs()
    {
        queue<node>q;
        node temp;
        temp.x1=a[1];temp.x2=a[2];temp.x3=a[3];temp.x4=a[4];temp.x5=a[5];temp.x6=a[6];temp.step=0;
        q.push(temp);
        while(!q.empty())
        {
            int i;
            node tt;
            tt=q.front();
            q.pop();
            if(tt.x1==b[1]&&tt.x2==b[2]&&tt.x3==b[3]&&tt.x4==b[4]&&tt.x5==b[5]&&tt.x6==b[6])
                return tt.step;
            for(i=1;i<=4;i++)
            {
                node ret;
                if(i==1){//left
                    ret.x1=tt.x4;ret.x2=tt.x3;ret.x3=tt.x1;
                    ret.x4=tt.x2;ret.x5=tt.x5;ret.x6=tt.x6;
                }
                else if(i==2){//right
                    ret.x1=tt.x3;ret.x2=tt.x4;ret.x3=tt.x2;
                    ret.x4=tt.x1;ret.x5=tt.x5;ret.x6=tt.x6;
                }
                else if(i==3){//front
                    ret.x1=tt.x6;ret.x2=tt.x5;ret.x3=tt.x3;
                    ret.x4=tt.x4;ret.x5=tt.x1;ret.x6=tt.x2;
                }
                else if(i==4){//back
                    ret.x1=tt.x5;ret.x2=tt.x6;ret.x3=tt.x3;
                    ret.x4=tt.x4;ret.x5=tt.x2;ret.x6=tt.x1;;
                }
                if(!vis[ret.x1][ret.x2][ret.x3][ret.x4][ret.x5][ret.x6])
                {
                    vis[ret.x1][ret.x2][ret.x3][ret.x4][ret.x5][ret.x6]=1;
                    ret.step=tt.step+1;
                    q.push(ret);
                }
            }
        }
        return -1;
    }
    int main()
    {
        int i,j;
        while(scanf("%d%d%d%d%d%d",&a[1],&a[2],&a[3],&a[4],&a[5],&a[6])!=EOF)
        {
            for(i=1;i<=6;i++)
                scanf("%d",&b[i]);
    
    
    
            for(i=1;i<=6;i++)
                for(j=1;j<=6;j++)
                    for(int k=1;k<=6;k++)
                        for(int f=1;f<=6;f++)
                            for(int g=1;g<=6;g++)
                                for(int h=1;h<=6;h++)
                                    vis[i][j][k][f][g][h]=0;
            int ans=bfs();
            if(ans==-1)
                printf("-1
    ");
            else printf("%d
    ",ans);
        }
    }
  • 相关阅读:
    Ubuntu 12.04 + nginx + php5 + phpfpm安装,并进行多站点配置
    PHP的FTP类
    php操作mongodb 分组排序
    mongodb 条件操作符
    PHP匿名登录FTP
    PHP连接到FTP服务器注意事项
    Java SE第二讲 原生数据类型Primitive Data Type
    java se 第五讲 运算符续
    Java SE 第一讲 入门jdk的下载安装
    Java SE第三讲:原生数据类型的使用陷阱
  • 原文地址:https://www.cnblogs.com/sweat123/p/4682168.html
Copyright © 2020-2023  润新知