首页 > 其他 > 详细

HDU 1584 蜘蛛牌

时间:2014-02-10 16:50:07      阅读:334      评论:0      收藏:0      [点我收藏+]

题解:纸牌只能移到比其大一的纸牌上,所以移动方向是定的,那么,就只有选择移动先后的问题了,对于决定要移的纸牌,比如1,如果2,3,4都是visited的状态,那么1一定是要移动到5的,因为2,3,4一定是全在5上了,清楚这一点,这道题就变得很简单的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <cstdio>
#include <iostream>
using namespace std;
int V[15],a[15],ans;
 
void dfs(int now,int step)
{
    if (now>=ans) return;
    if (step==9){ans=now;return;}
    for(int i=1;i<10;i++)
    if(!V[i]){
        for(int j=i+1;j<=10;j++){
            if(!V[j]){
                V[i]=true;
                dfs(now+abs(a[i]-a[j]),step+1);
                break;
            }
        }
        V[i]=false;
    }
}
 
int main()
{
    int T,sit;
    scanf("%d",&T);
    while(T--)
    {
        ans=999999999;
        for(int i=1;i<=10;i++)
        {
            scanf("%d",&sit);
            a[sit]=i;
        }
        memset(V,false,sizeof(V));
        dfs(0,0);
        printf("%d\n",ans);       
    }
}

HDU 1584 蜘蛛牌

原文:http://www.cnblogs.com/forever97/p/3542802.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!