poj 2718 Smallest Difference
2013-12-12 23:58
459 查看
题目链接:点击打开链接
题意:有一列数,对其任意分成两组,每组按一定顺序可以组成一个数。
问得到的两个数的差最小是多少。
要想两个数的差最小,就是对半分,暴力比较求最小值。
关键就是用next_permutation()函数求这列数的全排列,排除前导零的情况。
题意:有一列数,对其任意分成两组,每组按一定顺序可以组成一个数。
问得到的两个数的差最小是多少。
要想两个数的差最小,就是对半分,暴力比较求最小值。
关键就是用next_permutation()函数求这列数的全排列,排除前导零的情况。
#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #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;i<mid;i++) x=x*10+a[i]; for(int i=mid+1;i<n;i++) y=y*10+a[i]; if(ans>abs(x-y)) ans=abs(x-y); } }while(next_permutation(a,a+n)); cout<<ans<<endl; } int main() { int T; char c; scanf("%d",&T); getchar(); while(T--) { n=0; memset(a,0,sizeof(a)); while((c=getchar())!='\n') { if(c!=' ') a[n++]=c-'0'; } if(n==1) printf("%d\n",a[0]); else if(n==2) printf("%d\n",abs(a[1]-a[0])); else solve(); } return 0; }
相关文章推荐
- jquery uploadify的JS用法以及JAVA类的用法
- jQuery 异步上传插件 Uploadify 使用 struts
- jQuery事件处理(五)
- 网页前端持续集成(2) - qunit+JSCoverage+PhantomJS使用小记
- 神奇的CSS3按钮特效
- CSS三栏布局——中间固定两边自适应宽度
- js模版引擎handlebars.js实用教程
- Google Protocol Buffer 的使用和原理
- html中radio值的获取、赋值、注册事件。
- SQL Server 2012的OFFSET-FETCH筛选
- How to clone a scene node
- 第一个HTML标记
- Css框架选择---渴切(ThinkCss)
- 如何使用js操作css属性
- 用按钮或链接实现JSP页面跳转
- ICoverageAnnotationFeature注记字符串内容获取
- JavaScript字符转Unicode,顺便说句:GitHub的Oh no页面很亮
- JSP分页
- JS学习—this关键字
- setTimeout(f, 0)的应用&利用Deferred实现队列运行