hdu 1584 搜索水题

来源:互联网 发布:淘宝双十一下载 编辑:程序博客网 时间:2024/05/22 08:21
#include<iostream>#include<cstdio>using namespace std;int pcards[11],sign[11],minn;int jian(int a,int b){if(a>b) return a-b;else return b-a;}void dfs(int lcard,int steps){int i,j;for(i=1;i<=9;i++){if(sign[i]!=1){sign[i]=1;for(j=i+1;j<=10;j++){if(sign[j]!=1) break;}steps+=jian(pcards[j],pcards[i]);if(lcard>1){dfs(lcard-1,steps);steps-=jian(pcards[j],pcards[i]);}else{if(minn>steps) minn=steps;}sign[i]=0;                 //标记一定要在最后置为零,不论搜索有无结束}}}int main(){int t,i,ten,steps;scanf("%d",&t);while(t--){for(i=1;i<=10;i++){scanf("%d",&ten);pcards[ten]=i;}memset(sign,0,sizeof(sign));steps=0;minn=100;for(i=1;i<=9;i++){sign[i]=1;steps=steps+jian(pcards[i+1],pcards[i]);dfs(8,steps);steps=0;sign[i]=0;}printf("%d\n",minn);}return 0;}