一个小练习题

#include<iostream>
#include<cmath>
using namespace std;
int n,a[10000000],b[10000000],mmin=10000000,vis[10000000];
int c[1000000];
void dfs(int p);
int main()
{
    //freopen("E:\\1\\9.txt","r",stdin);
    int i,j;
    cin>>n;
    for(i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    dfs(1);
    cout<<mmin;
}

void dfs(int p)
{
    int i;
    //if(p==n*2+1)
    if(p==n+1)
    {
        for(i=1;i<=n;i++)
        {
            c[2*i-1]=b[i]/10;
            c[2*i]=b[i]%10;
        }
        int s = 0;
        for(i=1;i<2*n;i++) s += abs(c[i]-c[i+1]);
        if(mmin>s) mmin=s;
        return;
    }
    //for(i=1;i<=n*2;i++)
    for(i=1;i<=n;i++)
    {
        if(vis[i]==0)
        {
            vis[i]=1;
            b[p]=a[i];
            dfs(p+1);
            vis[i]=0;
        }
    }
    return;
}

猜你喜欢

转载自www.cnblogs.com/zuimeiyujianni/p/9288648.html