提交时间:2021-05-27 17:38:41

运行 ID: 19955

#include<iostream> using namespace std; int n,a[20],ans=INT_MAX,t=0; bool f[20]= {0}; int abs(int x) { return x>0?x:-x; } void search(int t,int prev,int k) { int d; if(k>=n) { if(t<ans) ans=t; return; } for(int i=1; i<=n; i++) if(!f[i]) { d=abs(a[prev]%10-a[i]/10); t+=d; f[i]=true; search(t,i,k+1); f[i]=false; t-=d; } } int main() { cin>>n; for(int i=1; i<=n; i++)cin>>a[i],t+=abs(a[i]/10-a[i]%10); for(int i=1; i<=n; i++)f[i]=1,search(t,i,1),f[i]=0; cout<<ans<<endl; return 0; }