zoukankan      html  css  js  c++  java
  • 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);
        }
    }
  • 相关阅读:
    Alpha 冲刺 (8/10)
    Alpha 冲刺 (7/10)
    Alpha 冲刺 (6/10)
    团 队 作 业 ———— 随 堂 小 测
    Alpha 冲刺 (5/10)
    Alpha 冲刺 (4/10)
    Beta冲刺博客汇总(麻瓜制造者)
    Beta冲刺(3/5)(麻瓜制造者)
    快速搭建一个Express工程骨架
    个人作业——软件产品案例分析
  • 原文地址:https://www.cnblogs.com/sweat123/p/4682168.html
Copyright © 2011-2022 走看看