https://vjudge.net/problem/30554/origin
中文题意,不解释
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int a[11],vis[11],ans;
void dfs(int time,int sum){
if(sum>ans)return;
if(time==9){
ans=sum;
return;
}
for(int i=1;i<10;i++){
if(!vis[i]){
vis[i]=1;
for(int j=i+1;j<=10;j++){
if(!vis[j]){
dfs(time+1,sum+abs(a[i]-a[j]));
break;
}
}
vis[i]=0;
}
}
}
int main(){
int n,x;
cin>>n;
while(n--){
for(int i=1;i<=10;i++){
cin>>x;
a[x]=i;
}
memset(vis,0,sizeof(vis));
ans=0x7fffffff;
dfs(0,0);
cout<<ans<<endl;
}
return 0;
}