hdu--1548--dfs--蜘蛛牌

/*
    Name: hdu--1548--蜘蛛牌
    Author: shen_渊
    Date: 17/04/17 09:15
    Description: dfs,不好想,看两个大神的代码好久http://www.cnblogs.com/sook/archive/2011/03/27/1996775.html
                                                 http://blog.csdn.net/cscj2010/article/details/7364010
*/
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
void dfs(int);
],p[];
int ans,ct;
int main(){
//    freopen("in.txt","r",stdin);
    ios::sync_with_stdio(false);
    int t;cin>>t;
    while(t--){
        memset(vis,,sizeof(vis));
        memset(p,,sizeof(p));
        ans = 0xffffff;//0在第一次递归排完之前不能停
        ct = ;
        ; i<; ++i){//p[a] 的位置为i
            int a;cin>>a;
            p[a] = i;
        }
        dfs();
        cout<<ans<<endl;
    }
    ;
}
void dfs(int num){//num是牌数
    ){
        ans = ct;
        return ;
    }
    ; i<; ++i){//i=1全排列不用等于10,毕竟有内循环
        if(!vis[i]){
            ; k<=; ++k){// k<=10,p[10]是10的位置 可以等
                if(!vis[k]){
                    ct += abs(p[i]-p[k]);
                    if(ans > ct){
                        vis[i] = ;
                        dfs(num+);
                        vis[i] = ;
                    }
                    ct -= abs(p[i]-p[k]);
                    break;
                }
            }
        }
    }
}
上一篇:Centos 64位安装 EPEL源


下一篇:poj3669 Meteor Shower(预处理+bfs)