Smallest Difference
题 意:给定若干位十进制数,你可以通过选择一个非空子集并以某种顺序构建一个数。剩余元素可以用相同规则构建第二个数。除非构造的数恰好为0,否则不能以0打头。
举例来说,给定数字0,1,2,4,6与7,你可以写出10和2467。当然写法多样:210和764,204和176,等等。最后一对数差的绝对值为28,实际上没有其他对拥有更小的差。

数据范围: 不超过10个二进制数
输入样例:

1
0 1 2 4 6 7

输出样例:

28

思 路:肯定是从num/2分开他们的差会最小,用next_permutation。全排列

//
// Created by luozujian on 17-10-24.
//
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<iostream>
#include<queue>
#include<stack>
#include<vector>
#define INF 0x3f3f3f3f
using namespace std;
int a[10];
int num ;
void solve()
{sort(a,a+num);if(num == 2){printf("%d\n",abs(a[num/2]-a[num/2-1]));return ;}int ans = INF;do{int num1 = 0,num2 = 0;if(a[0] == 0 || a[num/2] == 0 || num<=2){continue;}for(int i=0;i<num/2;i++){num1 = num1*10+a[i];}for(int i=num/2;i<num;i++){num2 = num2*10+a[i];}ans = min(ans,abs(num1-num2));}while(next_permutation(a,a+num));printf("%d\n",ans);
}
int main()
{int t;scanf("%d",&t);getchar();while(t--){num = 0;char ch;while((ch = getchar())!='\n'){if(ch>='0' && ch<='9'){int number = (int) ch - '0';a[num++] = (int) ch - '0';}}solve();}return 0;
}

POJ - 2718 Smallest Difference相关推荐

  1. POJ 2718 Smallest Difference

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

  2. POJ 2718 Smallest Difference 贪心构造

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

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

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

  4. POJ 2718 Smallest Difference

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

  5. LintCode 387: Smallest Difference

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

  6. POJ 2718【permutation】

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

  7. POJ 2718 贪心

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

  8. ACM Smallest Difference

    给定一些不同的十进制数字(distinct decimal digits),您可以通过选择这些数字的非空子集(non-empty subset)并以某种顺序编写它们,从而形成一个整数. 剩下的数字可以 ...

  9. poj2718 Smallest Difference

    思路: 暴力乱搞. 实现: 1 #include <iostream> 2 #include <cstdio> 3 #include <sstream> 4 #in ...

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

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

最新文章

  1. 直播时代:让IOS普通开发者一天内做出一个RTMP直播客户端,并且带有美艳直播功能。(文章最下面有github源码地址)...
  2. C++之vector容器初学(二)——插入和删除
  3. java语言_JAVA语言
  4. HDU- 1754 I Hate It
  5. 前端学习(1377):express路由参数
  6. 刷新SWAP分区方法
  7. ArcGIS操作实例视频教程38讲全集(转)
  8. T100服务端接口开发步骤
  9. RedHat免费订阅账号注册方式
  10. 中学生编程大赛_青少年编程竞赛汇总
  11. iPhone5主摄像头图像传感器来自SONY
  12. 什么?四六级及格线不是425分?!
  13. 湖南大学计算机专业女生宿舍,2020年湖南大学新生宿舍环境条件,大一新生男生女生宿舍内部图片【多图】...
  14. qt tcp不可以循环发送_qt tcp客户端发送消息 服务器不能立即接收到
  15. Unity优化☀️渲染篇:CPU/GPU
  16. 树莓派3代发布支持蓝牙WiFi:售35美元
  17. 华为手机开启adb调试模式
  18. 物联网感知——视频监控技术
  19. EXCEL 怎么将公式应用到一列
  20. php1 750,评测分析爱普生tw750质量和tw5700哪个更值得?使用区别怎么样?大家可能不知的秘密...

热门文章

  1. 【游戏开发创新】Unity狗屁不通文章生成器阐述点赞的意义,可生成文字长图保存到本地(Unity | 附源码 | Text转Texture长图 | 详细教程)
  2. 酒吧手机游戏java_酒吧里24种常见游戏的玩法
  3. 影视导航资源库api php,影视资源采集站
  4. Eclipse安装包 百度网盘
  5. java script 下载_JavaScript下载
  6. 汽车电子开发设计常用软件工具有哪些
  7. 光伏发电极其并网控制matlab/simulink仿真文件,最大功率点跟踪采用扰动观察法
  8. 数学建模常用方法讲解(一)
  9. 初学“Jave”心得
  10. 阿里云云原生一体化数仓 - 数据安全能力解读