POJ - 2718 Smallest Difference
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相关推荐
- POJ 2718 Smallest Difference
题目 Smallest Difference Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 19791 Accepted: 53 ...
- POJ 2718 Smallest Difference 贪心构造
不用说,想让两个数的差最小,那这个两个数的位数要最接近. 不妨设a>b; 如果n是奇数 a就是最小的(n/2+1)位数,b就是最大的n/2位数 如果是偶数 枚举每一对相邻的数,大的作为a的第一位 ...
- POJ 2718 Smallest Difference(dfs,剪枝)
枚举两个排列以及有那些数字,用dfs比较灵活. dfs1是枚举长度短小的那个数字,dfs2会枚举到比较大的数字,然后我们希望低位数字的差尽量大, 后面最优全是0,如果全是0都没有当前ans小的话就剪掉 ...
- POJ 2718 Smallest Difference
分奇数和偶数两种情况进行讨论,奇数可贪心,偶数没想到贪心的方法,采用直接枚举的方法过的~~~ #include <cmath> #include <cstdio> #inclu ...
- LintCode 387: Smallest Difference
LintCode 387: Smallest Difference 题目描述 给定两个整数数组(第一个是数组A,第二个是数组B),在数组A中取A[i],数组B中取B[j],A[i]和B[j]两者的差越 ...
- POJ 2718【permutation】
POJ 2718 问题描述: 给一串数,求划分后一个子集以某种排列构成一个数,余下数以某种排列构成另一个数,求这两个数最小的差,注意0开头的处理. 超时问题:一开始是得到一个数列的组合之后再从中间进行 ...
- POJ 2718 贪心
做了一上午的2718,差点爆炸 做法一: 用到了STL中的next_permutation产生所有的全排列 要使生成的两个数差最小,两个数的位数差肯定小于等于1,产生一个排列之后在中间分开就可以 什么 ...
- ACM Smallest Difference
给定一些不同的十进制数字(distinct decimal digits),您可以通过选择这些数字的非空子集(non-empty subset)并以某种顺序编写它们,从而形成一个整数. 剩下的数字可以 ...
- poj2718 Smallest Difference
思路: 暴力乱搞. 实现: 1 #include <iostream> 2 #include <cstdio> 3 #include <sstream> 4 #in ...
- (全排列)Smallest Difference (poj2718)
题目: Description - 题目描述 给定若干位十进制数,你可以通过选择一个非空子集并以某种顺序构建一个数.剩余元素可以用相同规则构建第二个数.除非构造的数恰好为0,否则不能以0打头. 举例来 ...
最新文章
- 直播时代:让IOS普通开发者一天内做出一个RTMP直播客户端,并且带有美艳直播功能。(文章最下面有github源码地址)...
- C++之vector容器初学(二)——插入和删除
- java语言_JAVA语言
- HDU- 1754 I Hate It
- 前端学习(1377):express路由参数
- 刷新SWAP分区方法
- ArcGIS操作实例视频教程38讲全集(转)
- T100服务端接口开发步骤
- RedHat免费订阅账号注册方式
- 中学生编程大赛_青少年编程竞赛汇总
- iPhone5主摄像头图像传感器来自SONY
- 什么?四六级及格线不是425分?!
- 湖南大学计算机专业女生宿舍,2020年湖南大学新生宿舍环境条件,大一新生男生女生宿舍内部图片【多图】...
- qt tcp不可以循环发送_qt tcp客户端发送消息 服务器不能立即接收到
- Unity优化☀️渲染篇:CPU/GPU
- 树莓派3代发布支持蓝牙WiFi:售35美元
- 华为手机开启adb调试模式
- 物联网感知——视频监控技术
- EXCEL 怎么将公式应用到一列
- php1 750,评测分析爱普生tw750质量和tw5700哪个更值得?使用区别怎么样?大家可能不知的秘密...
热门文章
- 【游戏开发创新】Unity狗屁不通文章生成器阐述点赞的意义,可生成文字长图保存到本地(Unity | 附源码 | Text转Texture长图 | 详细教程)
- 酒吧手机游戏java_酒吧里24种常见游戏的玩法
- 影视导航资源库api php,影视资源采集站
- Eclipse安装包 百度网盘
- java script 下载_JavaScript下载
- 汽车电子开发设计常用软件工具有哪些
- 光伏发电极其并网控制matlab/simulink仿真文件,最大功率点跟踪采用扰动观察法
- 数学建模常用方法讲解(一)
- 初学“Jave”心得
- 阿里云云原生一体化数仓 - 数据安全能力解读