#include<iostream>
#include<string.h>
#define N 10
using namespace std;
int arrHead[13];
int arrTail[13];
int flag[13];
int minNum=4444444;
int num=0;
void dfs(int index){
if(index==N){
if(num<minNum){
minNum=num;
}
}
for(int i =0;i<N;i++){
if(flag[i]==0){
for(int j=0;j<N;j++){
if(arrTail[j]==arrHead[i]+1&&flag[j]==0){
flag[i]=1;
int tempArr =arrTail[j];
arrTail[j]=arrTail[i];
int dis;
if(j>i){
dis=(j-i);
}
else{
dis=(i-j);
}
num+=dis;
dfs(index+1);
flag[i]=0;
arrTail[j]=tempArr;
num-=dis;
break;
}
}
}
}
}
int main(){
int n;
cin>>n;
while(n--){
for(int i=0;i<N;i++){
cin>>arrHead[i];
arrTail[i]=arrHead[i];
}
minNum=4444444;
memset(flag,0,N*sizeof(int));
dfs(1);
cout<<minNum<<endl;
}
return 0;
}
hdu1584
最新推荐文章于 2020-07-11 10:40:00 发布