给定许多不同的十进制数字,您可以通过选择这些数字的非空子集并以某种顺序编写它们来形成一个整数。 剩余的数字可以按某种顺序写下来形成第二个整数。 除非得到的整数是 0,否则整数不能以数字 0 开头。
例如,如果给你数字 0、1、2、4、6 和 7,你可以写成整数对 10 和 2467。当然,有很多方法可以形成这样的整数对:210 和 764, 204 和 176 等。最后一对整数之间的差值的绝对值为 28,事实证明,上述规则形成的任何其他对都无法达到更小的差值。

Input

输入的第一行包含要遵循的案例数。 对于每种情况,有一行输入包含至少两个但不超过 10 个十进制数字。 (十进制数字是 0、1、…、9。)在输入的一行中没有任何数字出现超过一次。 数字将按升序出现,并由一个空格隔开。

Output

对于每个测试用例,在一行上写下两个整数的最小绝对差,这两个整数可以从上面的规则中描述的给定数字写入。

Sample

Input

1
0 1 2 4 6 7

Output

28

思路

全排列

代码

#include "stdio.h"
#include "algorithm"
#include "math.h"
using namespace std;
int a[99];
int main()
{int n,l=0;char c,o;scanf("%d",&n); getchar();while(n--){l=0;while(~scanf("%d%c",&a[l++],&c)&&(c!='\n'));if(l==2){printf("%d\n",abs(a[0]-a[1]));continue;}int mid=l/2;int s=999999999;do{int b1=0,b2=0;if(a[0]==0||a[mid]==0)//长度为奇数,且a[]中有0时,就起作用:如例子0 1 2: 有这步答案为8,没这步答案为1 continue;for(int i=0;i<mid;i++)b1=b1*10+a[i];for(int i=mid;i<l;i++)b2=b2*10+a[i]; s=min(s,abs(b1-b2)); }while(next_permutation(a,a+l));printf("%d\n",s);}
}

Smallest Difference POJ-2718(全排列)相关推荐

  1. POJ 2718 Smallest Difference

    题目 Smallest Difference Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 19791 Accepted: 53 ...

  2. LintCode 387: Smallest Difference

    LintCode 387: Smallest Difference 题目描述 给定两个整数数组(第一个是数组A,第二个是数组B),在数组A中取A[i],数组B中取B[j],A[i]和B[j]两者的差越 ...

  3. POJ 2718【permutation】

    POJ 2718 问题描述: 给一串数,求划分后一个子集以某种排列构成一个数,余下数以某种排列构成另一个数,求这两个数最小的差,注意0开头的处理. 超时问题:一开始是得到一个数列的组合之后再从中间进行 ...

  4. POJ 2718 Smallest Difference 贪心构造

    不用说,想让两个数的差最小,那这个两个数的位数要最接近. 不妨设a>b; 如果n是奇数 a就是最小的(n/2+1)位数,b就是最大的n/2位数 如果是偶数 枚举每一对相邻的数,大的作为a的第一位 ...

  5. POJ 2718 Smallest Difference(dfs,剪枝)

    枚举两个排列以及有那些数字,用dfs比较灵活. dfs1是枚举长度短小的那个数字,dfs2会枚举到比较大的数字,然后我们希望低位数字的差尽量大, 后面最优全是0,如果全是0都没有当前ans小的话就剪掉 ...

  6. POJ 2718 Smallest Difference

    分奇数和偶数两种情况进行讨论,奇数可贪心,偶数没想到贪心的方法,采用直接枚举的方法过的~~~ #include <cmath> #include <cstdio> #inclu ...

  7. (全排列)Smallest Difference (poj2718)

    题目: Description - 题目描述 给定若干位十进制数,你可以通过选择一个非空子集并以某种顺序构建一个数.剩余元素可以用相同规则构建第二个数.除非构造的数恰好为0,否则不能以0打头. 举例来 ...

  8. POJ 2718 贪心

    做了一上午的2718,差点爆炸 做法一: 用到了STL中的next_permutation产生所有的全排列 要使生成的两个数差最小,两个数的位数差肯定小于等于1,产生一个排列之后在中间分开就可以 什么 ...

  9. poj-2718 Smallest Difference

    [题目链接] 思路: STL封装好的全排列函数next_permutation()就是快啊,无奈自己写的全排列各种TLE~ 代码: #include<iostream> #include& ...

最新文章

  1. 程序计算机限制无法打开,由于一个软件限制策略的阻止,windows无法打开此程序...解决方案参考...
  2. hadoop元数据mysql中表字段_Hive 元数据表结构详解
  3. Linux档案属性与目录配置
  4. Docker最全教程之树莓派和Docker(十六)
  5. (软件工程复习核心重点)第十二章软件项目管理-第二节:进度计划
  6. sun.misc.Unsafe的理解
  7. NOIP2013D1T3货车运输(最大生成树+倍增lca)
  8. Upload LABS Pass-1
  9. matlab中lambertw,MATLAB解常微分方程
  10. pdf批量添加图章_1分钟学会制作电子公章,三步搞定,轻松在PDF文件中添加公章图片...
  11. centos 6上安装使用saltstack以及基础管理
  12. Git Extensions 2.33出现unhandled exception has ……解决方法
  13. Ubuntu20.04基本配置和常见问题(vmwareTools配置、换源、网卡配置)
  14. java_web tomcat服务器的安装与配置
  15. 十五道Python小案例,学会这些,Python基础已过关!
  16. 关于火狐浏览器国际版和国内版的说明
  17. 软件人员kpi制定模板_员工绩效考核评分表模板
  18. 一个简单的log2(x)的快速计算方法
  19. 第一篇 外贸企业出口退税
  20. 拒绝访问病毒解决方法

热门文章

  1. Javascript网页打印方法汇总
  2. rust拆自己家门_rust游戏门怎么拆不掉 | 手游网游页游攻略大全
  3. mybatis:#{} 与 ¥{} 的区别以及各自的作用
  4. go语言必备基础技能
  5. 物联网与元宇宙融合发展
  6. IOS开发——新浪微博认证失败处理
  7. python中fac函数是什么意思_好程序员Python教程系列之递归函数与匿名函数调用
  8. 分享115个HTML电子商务模板,总有一款适合您
  9. 优动漫PAINT提取线稿功能-亮度转化透明度
  10. messagehub讲解_Message Hub Mobile