您的位置:首页 > 其它

HDU-1584 蜘蛛牌 搜索

2013-11-17 19:35 381 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1584

#include<stdio.h>
#include<iostream>
#include<string>
#include<string.h>
#include<vector>
#include<queue>
#include<map>
#include<algorithm>
using namespace std;
const int maxn = 15;
const int inf = 1<<30;

int ans;
int a[maxn],vis[maxn];
void dfs( int id,int sum )
{
if( sum >= ans )
return;
if( id == 9 )
{
ans = sum;
return;
}
for( int i = 1; i <= 10; i ++ )
{
if( !vis[i] )
{
vis[i] = true;
for ( int j = i+1; j <= 10; j ++ )
{
if ( !vis[j] )
{
dfs( id+1,sum + abs(a[i]-a[j]) );
break;
}
}
vis[i] = false;
}
}

}
int main()
{
//freopen("data.txt","r",stdin);
int t,temp;
scanf("%d",&t);
while ( t-- )
{
for ( int i = 1; i <= 10; i ++ )
{
scanf("%d",&temp);
a[temp] = i;
}
memset( vis,0,sizeof(vis));
ans = 1000000;
dfs( 0,0 );
printf("%d\n",ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: