poj2718 Smallest Difference
来源:互联网 发布:阿里云 企业邮箱 作用 编辑:程序博客网 时间:2024/06/01 09:15
把10个以内的个位数组合成两个数 使差最小
看起来就可以暴力。。
这里用了一个 next_permutation函数
这是一个求一个排序的下一个排列的函数,可以遍历全排列
要注意的是,必须从最小字典序开始,才能所有情况都遍历完
#include <iostream>#include <cstring>#include <string>#include <cstdio>#include <cmath>#include <algorithm>#include <vector>#include <queue>#include <map>#define inf 0x3f3f3f3fusing namespace std;int num[15],l,t,cnt,ans,mid,tmp,s1,s2,i;char s[100];int main(){ scanf("%d",&t); getchar(); while(t--) { gets(s); l=strlen(s); cnt=0; for(i=0;i<l;i+=2) num[cnt++]=s[i]-'0'; if(cnt==2) { printf("%d\n",num[1]-num[0]); continue; } if(cnt==3) { if(num[0]==0) printf("%d\n",num[1]*10-num[2]); else printf("%d\n",num[0]*10+num[1]-num[2]); continue; } ans=inf; while(num[0]==0) next_permutation(num,num+cnt); mid=(cnt+1)/2; if(num[mid]) { s1=s2=0; for(i=0;i<mid;i++) s1=s1*10+num[i]; for(i=mid;i<cnt;i++) s2=s2*10+num[i]; tmp=abs(s1-s2); if(tmp<ans) ans=tmp; } while(next_permutation(num,num+cnt)) { /* for(i=0;i<cnt;i++) printf("%d ",num[i]); puts("");*/ mid=(cnt+1)/2; if(num[mid]) { s1=s2=0; for(i=0;i<mid;i++) s1=s1*10+num[i]; for(i=mid;i<cnt;i++) s2=s2*10+num[i]; tmp=abs(s1-s2); if(tmp<ans) ans=tmp; } } printf("%d\n",ans); } return 0;}
0 0
- poj2718 Smallest Difference
- poj2718 Smallest Difference
- POJ2718---Smallest Difference
- [dfs]poj2718 Smallest Difference
- POJ2718-Smallest Difference
- Smallest Difference poj2718
- POJ2718 Smallest Difference
- POJ2718-Smallest Difference
- poj2718 Smallest Difference【贪心】
- POJ2718 Smallest Difference
- poj2718 Smallest Difference
- POJ2718 Smallest Difference 【贪心+枚举】
- POJ2718——Smallest Difference
- POJ2718-Smallest Difference-穷竭搜索
- POJ2718 Smallest Difference (暴力搜索+全排列)
- Smallest Difference(Poj2718)(枚举全排列next_Permutation)
- POJ2718——Smallest Difference(暴力瞎搞)
- 【POJ2718】Smallest Difference(枚举排列)
- 浅析Python中的struct模块
- RSA如何加密文件
- 深入理解C# 静态类与非静态类、静态成员的区别
- 关于学习Hadoop中未总结的资料
- soapUI pro 4.0.1破解
- poj2718 Smallest Difference
- linux环境配置tomcat问题
- [BBS] ShowArticleFlat.jsp 08 、下拉条
- 网站建设需知
- 著名统计学者谢邦昌数据挖掘访谈
- JBoss 系列八十一: jBPM 6 中使用 jbpm-console 创建执行 BPM 流程 - II
- 大数据时代如何借势互联网开创自己的互联网事业
- javamail用QQ发邮件的时候报错SSl解决办法
- iOS开发教程:Storyboard全解析-第一部分