zoukankan      html  css  js  c++  java
  • 【DFS】hdu 1584 蜘蛛牌

    看代码:

    #include <iostream>
    #include <cstdio>
    #include <fstream>
    
    using namespace std;
    const int INF=100000000;
    const int MAXN=1000000;
    int ans;
    int pos[11];
    bool vis[11];
    int abs(int a,int b){
        if(a>b)return a-b;
        return b-a;
    }
    void dfs(int deep,int step){
        if(deep==9){
            if(step<ans)ans=step;
            return;
        }
        for(int i=1;i<10;i++){
            if(!vis[i]){
                vis[i]=1;
                for(int j = i+1;j<=10;j++)            {
                    //如果vis[j]==0,那么j就已经移动到比j更大的牌上了
                    
                    if(!vis[j]){ //找到了i能移动到的位置。
                        int temp=step+abs(pos[i],pos[j]);
                        if(temp>ans)break;
                        dfs(deep+1,step+abs(pos[i],pos[j]));
                        break;
                    }
                }
                vis[i]=0;
            }
        }
    }
    int main(){
        //freopen("in.txt","r",stdin);
    
        int t,n,m;
        scanf("%d",&t);
        while(t--){
            for(int i=1;i<=10;i++){
                int temp;
                scanf("%d",&temp);
                pos[temp]=i;
                vis[temp]=0;
            }
            ans=INF;
            dfs(0,0);
            printf("%d
    ", ans);
        }
        return 0;
    }
  • 相关阅读:
    表的相关内容
    数据类型
    mysql入门练习
    mysql入门
    协程
    多进程
    装饰器
    网络编程
    心路历程
    gensim的使用
  • 原文地址:https://www.cnblogs.com/bruce27/p/4455476.html
Copyright © 2011-2022 走看看