poj-2718-Smallest Difference
来源:互联网 发布:数据字典下载 编辑:程序博客网 时间:2024/05/20 22:37
题意:0——
思路:因为要找给定序列分成两部分之间的最小差,所以可以肯定两数应该平分这个序列(不知道你们能不能理解这个“平分序列”0.0)。
所以我是以序列总数的一半为上界进行回溯的。
代码附上:
#include <cstdio>#include <cstring>#include <cctype>#include <iostream>#include <queue>#include <cmath>#include <algorithm>#define FIN freopen("input.txt","r",stdin)using namespace std;typedef long long ll;typedef pair<int,int>P;const int MAX = 30;const int INF=0x3f3f3f3f;int n,res,k;int ans[MAX],vis[MAX],digit1[MAX],digit2[MAX];int cast(int *a,int la){ int sum=0; for(int i=0;i<la;i++) sum=sum*10+a[i]; return sum;}void calc(int *a,int la,int *b,int lb){ if(la>1&&a[0]!=0){ for(;;){ if(lb>1&&b[0]!=0){ res=min(res,abs(cast(a,la)-cast(b,lb))); } if(!next_permutation(b,b+lb)) break; } } else if(la==1) for(;;){ if((lb>1&&b[0]!=0)||lb==1){ res=min(res,abs(cast(a,la)-cast(b,lb))); } if(!next_permutation(b,b+lb)) break; }}void dfs(int cnt){ if(cnt==k/2){ int l=0; for(int i=0;i<k;i++)if(!vis[ans[i]]) digit2[l++]=ans[i]; calc(digit1,cnt,digit2,l); return ; } for(int i=0;i<k;i++){ if(!vis[ans[i]]){vis[ans[i]]=1;digit1[cnt]=ans[i];dfs(cnt+1);vis[ans[i]]=0;} }}int main(){ //FIN; int T; scanf("%d",&T); getchar(); while(T--){ k=0;char ch; for(;;){ ch=getchar(); if(isdigit(ch)) ans[k++]=ch-'0'; else if(ch=='\n') break; else continue; } res=INF; memset(vis,0,sizeof(vis)); dfs(0); printf("%d\n",res ); } return 0;}
0 0
- POJ 2718 Smallest Difference
- poj 2718 Smallest Difference
- POJ-2718-Smallest Difference
- poj 2718 Smallest Difference
- poj 2718 Smallest Difference
- POJ 2718-Smallest Difference
- POJ 2718 Smallest Difference
- POJ 2718 Smallest Difference
- POJ 2718 Smallest Difference
- POJ 2718 Smallest Difference
- Smallest Difference(POJ-2718)
- POJ 2718 Smallest Difference
- POJ-2718 Smallest Difference
- poj-2718 Smallest Difference
- poj 2718 Smallest Difference
- POJ--2718 Smallest Difference
- poj-2718-Smallest Difference
- POJ 2718 Smallest Difference
- vagrant up and authentication failure
- 114.Reverse String
- {Less} is more, than Css
- iOS学习笔记41-Swift(一)基础部分
- 【参考】spring整合activemq
- poj-2718-Smallest Difference
- python基础一
- 对三个超市销量、品牌数、均价聚类
- poj 3275 Ranking the Cows 传递闭包+邻接表优化
- ubuntu chrome
- ubuntu14.04下安装32位库,ia32-libs
- field requires API 19(current min is 18) java.nio.charset.standardcharsets#UTF_8
- 图论基础
- 安装SQLserver 2014(For AlwaysOn)