poj 2718 Smallest Difference

题目链接:点击打开链接


题意:有一列数,对其任意分成两组,每组按一定顺序可以组成一个数。

            问得到的两个数的差最小是多少。


要想两个数的差最小,就是对半分,暴力比较求最小值。

关键就是用next_permutation()函数求这列数的全排列,排除前导零的情况。


#include
#include
#include
#include
#define INF 0x3f3f3f3f
using namespace std;

int a[15];
int n;

void solve()
{
    while(a[0]==0)
        next_permutation(a,a+n);

    int ans=INF;
    int mid=(n+1)/2;
    do
    {
        if(a[mid])
        {
            int x=a[0],y=a[mid];
            for(int i=1;iabs(x-y))
                ans=abs(x-y);
        }

    }while(next_permutation(a,a+n));
    cout<


你可能感兴趣的:(搜索)