poj2718
一、题意:给定一串数字,数字没有重复,个数为2~10个。求这些数字分为两份,组合成的两个数的差最小是多少
二、思路:首先可以肯定的是,将这n个数平均分成两份,所得到的最小差一定在其某个组合当中。因此可将该序列进行全排列,然后便利每一种情况。这里需要注意以下几点:1、利用next_permutation函数进行全排列前,需要将原序列按从小到大先排个序 2、要考虑这两个数不能以0开头的情况
三、代码:
#include"iostream"
#include"stdio.h"
#include"algorithm"
#include"string.h"
using namespace std; int num[15];
int cnt; int GetDiff(int *a)
{
int n=0,m=0;
if((a[0]==0||a[cnt/2]==0)&&cnt>2) return -1; for(int i=0;i<cnt/2;i++)
{
n=n*10+a[i];
}
for(int j=cnt/2;j<cnt;j++)
{
m=m*10+a[j];
}
return abs(n-m);
} int Permutation()
{
int miniDiff=10000000;
do
{
int diff=GetDiff(num);
if(diff!=-1)
miniDiff=min(miniDiff,diff);
}while(next_permutation(num,num+cnt)); return miniDiff;
} int main()
{
// freopen("in.txt","r",stdin);
int t;
cin>>t;
getchar();
while(t--)
{
char input[100];
gets(input);
cnt=0;
for(int i=0;i<strlen(input);i++)
{
if(isdigit(input[i]))
num[cnt++]=input[i]-'0';
}
sort(num,num+cnt);
cout<<Permutation()<<endl;
}
return 0;
}
poj2718的更多相关文章
- poj2718 Smallest Difference(dfs+特判,还可以贪心更快)
https://vjudge.net/problem/POJ-2718 其实不太理解为什么10超时了.. 这题似乎是有贪心优化的方法的,我下面直接暴力了.. 暴力之余要特判两个点:1.超时点就是n=1 ...
- 《挑战程序设计竞赛》2.1 穷竭搜索 POJ2718 POJ3187 POJ3050 AOJ0525
POJ2718 Smallest Difference Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6509 Acce ...
- POJ-2718 Smallest Difference---DFS
题目链接: https://vjudge.net/problem/POJ-2718 题目大意: 有一列数,对其任意分成两组,每组按一定顺序可以组成一个数.问得到的两个数的差最小是多少. 思路: 直接d ...
- (DFS、全排列)POJ-2718 Smallest Difference
题目地址 简要题意: 给若干组数字,每组数据是递增的在0--9之间的数,且每组数的个数不确定.对于每组数,输出由这些数组成的两个数的差的绝对值最小是多少(每个数出现且只出现一次). 思路分析: 对于n ...
- POJ-2718 Smallest Difference
http://poj.org/problem?id=2718 从一些数里面选择一个子集组成一个数,余下的数组成另外一个数,(数不能以0开头)问两个数的差的绝对值最小是多少! 不管是奇数还是偶数,要想绝 ...
- POJ2718 递归套递归
就是给你一个数,排列组合,然后问如何排列之间的差值最小. 我之前的想法是一个递归,然后两个for循环枚举L1和L2,结果TLE了,然后想了一下剪枝发现没办法剪,然后看了一下别人的代码,用了next_p ...
- 【搜索】POJ-2718 贪心+枚举
一.题目 Description Given a number of distinct decimal digits, you can form one integer by choosing a n ...
- 【搜索】POJ-2718 全排列+暴力
一.题目 Description Given a number of distinct decimal digits, you can form one integer by choosing a n ...
- POJ-2718
Smallest Difference Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12158 Accepted: 3 ...
随机推荐
- 特殊的HttpApplication事件处理
在global.asax中,针对HttpApplication的事件处理,可以通过定义特殊命名的方法来实现.首先,这些方法必须符合System.EventHandler,因为所有的HttpApplic ...
- 编写高质量代码改善C#程序的157个建议——建议28:理解延迟求值和主动求值之间的区别
建议28:理解延迟求值和主动求值之间的区别 要理解延迟求值(lazy evaluation)和主动求值(eager evaluation),先看个例子: List<, , , , , , , , ...
- 关于Gridview激发了未处理的事件“RowDeleting”错误的处理
关于通过RowCommend事件执行删除操作时,提示 Gridview激发了未处理的事件“RowDeleting”错误的处理: <asp:TemplateField HeaderText=&qu ...
- 综合学生信息管理系统(JSP+JDBC)
原创 通过JSP+JDBC制作一个简单的操作数据库中表信息的系统. 总体界面如下,一共有5个功能块. 功能一:列出全部学生 功能二:按条件查询学生 功能三:新添加学生 功能四:按条件删除学生 功能五: ...
- Form1调用Unit2类中函数
Form1有一个button,当Form1.Create时触发Button的OnClick事件,OnClick事件调用Unit2单元中的函数: unit Unit2; interface uses F ...
- window phone 8资源管理器打开文件
一.打开安装包里面文件: StorageFolder sf = Package.Current.InstalledLocation;//ApplicationData.Current.LocalFol ...
- Android TV 开发 (1)
本文来自网易云社区 作者:孙有军 前言 这里主要记录几个TV问题的解决方案,如果对这个不感兴趣的其实就不用往下看了. 这几天有一个需求就是要求出一个TV版本的app,之前没有具体的了解Tv版的app有 ...
- 汇编工具安装一:MASM32的安装!
MASM32是一款汇编开发工具,网址:http://www.masm32.com/ ,它是集合了很多开发汇编程序的工具,windows下汇编程序的开发,很多人都在使用它. 直接下载:http://we ...
- iOS11.0后APP的图标和启动图
随着Xcode9的更新,APP的图标和启动图也发生了略微变化,下面介绍下图标和启动图的设置. 1.APP图标: 这些是系统默认你开发的项目支持iPad.Spotlight等,其实真正我们的项目只要支持 ...
- 定时器timer类
timer类 Timer(定时器)是Thread的派生类,用于在指定时间后调用一个方法. 构造方法: Timer(interval, function, args=[], kwargs={}) in ...