POJ 2718 - Smallest Difference(穷竭搜索)

原生SVG波浪动画实战:零依赖、高兼容、响应式实现 SVG波浪动画是一种轻量级前端动效技术,基于贝塞尔曲线路径动态重绘与requestAnimationFrame驱动,其核心原理是利用正弦函数生成平滑起伏的闭合路径。相比Canvas或Lottie,它具备更小体积、更低渲染开销和天然CSS变量支持等技术优势,显著提升页面停留时长与用户交互热区密度。广泛应用于落地页首屏、SaaS登录框、H5封面等需要视觉钩子的场景。本文聚焦原生实现方案,涵盖路径生成逻辑、响应式适配、iOS/Chrome兼容性避坑及CSS自定义属性驱动等工程化要点,助力开发者快速集成高性能SVG 阅读详情

Smallest Difference
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 3238 Accepted: 910

Description

Given a number of distinct decimal digits, you can form one integer by choosing a non-empty subset of these digits and writing them in some order. The remaining digits can be written down in some order to form a second integer. Unless the resulting integer is 0, the integer may not start with the digit 0. 

For example, if you are given the digits 0, 1, 2, 4, 6 and 7, you can write the pair of integers 10 and 2467. Of course, there are many ways to form such pairs of integers: 210 and 764, 204 and 176, etc. The absolute value of the difference between the integers in the last pair is 28, and it turns out that no other pair formed by the rules above can achieve a smaller difference.

Input

The first line of input contains the number of cases to follow. For each case, there is one line of input containing at least two but no more than 10 decimal digits. (The decimal digits are 0, 1, ..., 9.) No digit appears more than once in one line of the input. The digits will appear in increasing order, separated by exactly one blank space.

Output

For each test case, write on a single line the smallest absolute difference of two integers that can be written from the given digits as described by the rules above.

Sample Input

1
0 1 2 4 6 7

Sample Output

28

===============================

题意:给出的数字可以分开组成许多组,求所有组中的最小差。0不能做第一位


想能得到最小差的话其中一个数的位数一定为n/2,先深搜得到这个数,再把剩下的数字全排列即第二个数,计算差值


#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>

using namespace std;
int a[20],b[20],vis[20];
int n,ans;

void solve(int sum1)
{
    int num=0;
    int sum2=0;
    for(int i=0;i<n;i++)
    {
        if(!vis[i])
        {
            b[num++]=a[i];
            sum2=sum2*10+a[i];
        }
    }
    //cout<<"sum1="<<sum1<<" sum2="<<sum2<<endl;
    if((b[0]!=0)||(b[0]==0&&num==1)) ans=min(ans,abs(sum1-sum2));
    while(next_permutation(b,b+num))
    {
        if(b[0]==0) continue;
        sum2=0;
        for(int i=0;i<num;i++) sum2=sum2*10+b[i];
        ans=min(ans,abs(sum1-sum2));
    }
    //cout<<"sum1="<<sum1<<" sum2="<<sum2<<endl;
}

void dfs(int res,int sum)
{
    if(res>n/2)
    {
        solve(sum);
        return;
    }
    for(int i=0;i<n;i++)
    {
        if(res==1&&a[i]==0) continue;
        //cout<<"i="<<i<<endl;
        if(vis[i]) continue;
        vis[i]=1;
        dfs(res+1,sum*10+a[i]);
        vis[i]=0;
    }
}

int main()
{
    int T;
    char str[20];
    scanf("%d",&T);
    getchar();
    while(T--)
    {
        n=0;ans=1e9;
        memset(vis,0,sizeof(vis));
        gets(str);
        int len=strlen(str);
        for(int i=0;i<len;i+=2) a[n++]=str[i]-'0';
        //for(int i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl;
        dfs(1,0);
        printf("%d\n",ans);
    }
    return 0;
}


docker安装fastdfs+nginx配置 docker安装fastdfs+nginx,实现图片或文件的上传与下载 阅读详情

相关推荐

多机器人编队人工势场法协同避障算法原理及实现

ROS及SLAM进阶教程(十一)多机器人编队人工势场法协同避障算法原理及实现避障算法原理避障算法仿真 多机器人协同编队需要将理论和实践紧密地结合起来,其应用包括编队队形生成、保持、变换和路径规划与避障等等都是基于图论的理论基础完成的。 详细请参考ROS及SLAM进阶教程(八)多机器人协同编队算法原理及实现 自主避障功能是机器人编队在各种环境中保持自身安全的重要功能,在编队的基础上加入避障的功能,机器人可扫描到一定范围内的障碍物(包括其他机器人),在即将与之发生冲突时提前规避冲突,以保证自身的安全性,同时

Redglass的博客 1万+

POJ - 2718 Smallest Difference(全排列)

题意:将n个数字分成两组,两组分别组成一个数字,问两个数字的最小差值。要求,当组内数字个数多于1个时,组成的数字不允许有前导0。(2<=n<=10,每个数字范围是0~9) 分析: 1、枚举n个数字的全排列。 2、当两组数字个数相同或只差1时组成的两个数字才可能出现最小差值。 3、0~cnt/2 - 1为前半组数字,cnt/2~cnt-1为后半组数字。 4、注意get...

Cherrychan2014的博客 181

机器学习(ML)在材料领域应用

机器学习作为一种兼顾开发效率以及开发成本的方法,已经逐渐应用于材料发现、结构分析、性质预测、反向设计等多个领域,并且在材料学研究中展现出惊人的潜力。传统的发现新材料的方法,如经验试错法和基于密度泛函理论(DFT)的方法,往往需要较长的研发周期,成本高、效率低,已经不能很好的适应如今需求量激增的材料学领域 ...

W5632DE的博客 3716

Poj 2718 Smallest Difference【dfs】

Smallest Difference Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7225   Accepted: 1964 Description Given a number of distinct decimal digits, you can fo

希望的专栏 639

LightTools 中LCD投影仿真的checkerboard pattern偏振控制技术解析

本文深入解析了在LightTools软件中进行LCD投影仿真时,利用checkerboard pattern(棋盘格图案)结合偏振控制技术来模拟液晶面板像素开关、提升图像对比度的核心方法。文章从实战角度出发,详细拆解了通过设置波片(如1/2波片)和偏振片来操控S光与P光转换的原理,并分享了在LightTools中搭建仿真模型、使用VBA脚本自动化配置参数以提高效率的实用技巧,为光学工程师优化投影系统仿真流程提供了清晰指导。

weixin_29305313的博客 344

利用BMC和KVM远程安装联想服务器Ubuntu 22.04的完整指南

本文提供了一份详尽的指南,介绍如何利用联想服务器的BMC(基板管理控制器)和KVM(键盘、视频、鼠标)重定向功能,远程安装Ubuntu 22.04 LTS操作系统。内容涵盖从准备工作(如获取BMC信息、配置Java环境)、登录BMC并启动远程控制台,到挂载ISO镜像、设置引导以及完成Ubuntu安装与后续配置的全过程。该方法能极大提升服务器部署与运维效率,尤其适用于无法物理接触服务器的场景。

p8q9r0的博客 623

Smallest Difference POJ - 2718

滴答滴答---题目链接  Given a number of distinct decimal digits, you can form one integer by choosing a non-empty subset of these digits and writing them in some order. The remaining digits can be written dow...

chen_zan_yu_的博客 366

如何利用DeepSeek自动生成PLC程序?

在工业自动化领域,PLC是核心控制设备,其编程效率和质量直接影响生产线的运行效果。 然而,传统PLC编程依赖工程师手动编写代码,不仅耗时耗力,还容易出错。通过自动生成PLC程序,DeepSeek不仅大幅提升了编程效率,还优化了代码质量。 那么DeepSeek到底能否自动生成PLC程序呢? 有位电气工程师就尝试让DeepSeek设计一套五层电梯控制系统的PLC程序,下面就让我们看看吧。 技术原理:DeepSeek如何实现自动编程DeepSeek利用自然语言处理技术,将工程师输入的文本指令转换为PLC代码。例

Qinmingyue13的博客 6178

poj 2718 Smallest Difference

Description Given a number of distinct decimal digits, you can form one integer by choosing a non-empty subset of these digits and writing them in some order. The remaining digits can be written down

坏坏的薯片 407

【图像去噪】基于梯度为0法实现图像去噪附matlab代码

近几年,徐立提出的 L0 梯度最小化模型在图像平滑领域得到了广泛的应用和发展[11]. 和以往的局部滤波模型不同的是该模型可以全局的估计图像的像素值,因此,L0 梯度最小化模型在处理图像的同时能够很好的保护图像的边缘.​。

qq_59747472的博客 184

【YOLOv11改进 - 特征融合】SDI:多层次特征融合模块,替换contact操作

【YOLOv11改进 - 特征融合】SDI:多层次特征融合模块,替换contact操作

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 1771

POJ 2718 Smallest Difference (穷竭搜索+剪枝+全排列生成)

问题:Smallest Difference POJ - 2718给定若干位十进制数,你可以通过选择一个非空子集并以某种顺序构建一个数。剩余元素可以用相同规则构建第二个数。除非构造的数恰好为0,否则不能以0打头。 举例来说,给定数字0,1,2,4,6与7,你可以写出10和2467。当然写法多样:210和764,204和176,等等。最后一对数差的绝对值为28,实际上没有其他对拥有更小的...

勉強しているユキさんです 252

麻雀搜索算法(SSA)详解:从鸟群智能到优化实践

麻雀搜索算法(SSA)是一种新型群智能优化算法,模拟麻雀群体的觅食行为和反捕食机制。该算法将优化问题转化为麻雀群体对食物源的搜索过程,通过发现者、加入者和警戒者的角色分工实现高效优化。SSA具有原理新颖、参数合理、收敛快速等特点,在函数优化、工程设计和机器学习等领域展现出良好应用前景。算法通过数学模型模拟麻雀的觅食策略,包括发现者全局探索、加入者局部开发和警戒者危险预警机制,有效平衡了全局搜索与局部开发能力。SSA相比传统优化算法具有更好的收敛性和优化效果。

qq_42212808的博客 1072

Smallest Difference (POJ 2718, 穷竭搜索)

这个题有两种做法:1.使用next_permutation穷举 2.贪心法        这道题让我发现了一个问题,执行pow(x,y)这个函数就这么费时间么···        因为这个题在书中属于穷竭搜索的练习题,这里就不说贪心法怎么做了。解题思路就是排列,然后分成两组数,计算差。其实非常无脑,但是我提交了很多遍都TLE。。。直到我看了一下别人写的代码,发现在将一组数字组合成一个多位数时别

c138Rick的博客 421

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

POJ 2718 Smallest Difference 【DFS 穷竭搜索】

Smallest Difference Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6519   Accepted: 1774 Description Given a number of distinct decimal digits, you can fo

wyjwyl的专栏 488

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

穷竭搜索: POJ 2718 Smallest Difference

穷竭搜索: POJ 2718 Smallest Difference 题目:http://poj.org/problem?id=2718 题意: 就是输入N组数据,一组数据为,类似 【1 4 5 6 8 9】这样在0~9之间升序输入的数据,然后从这些数据中切一刀,比如 n1:【1 4 5】,n2:【6 8 9】这样,然后 abs(n...

豆子 178

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

poj2718Smallest Difference (穷竭搜索)

escription - 题目描述 给定若干位十进制数,你可以通过选择一个非空子集并以某种顺序构建一个数。剩余元素可以用相同规则构建第二个数。除非构造的数恰好为0,否则不能以0打头。 举例来说,给定数字0,1,2,4,6与7,你可以写出10和2467。当然写法多样:210和764,204和176,等等。最后一对数差的绝对值为28,实际上没有其他对拥有更小的差。 Input - 输入 输入...

awli5131的博客 154

POJ2718-Smallest Difference(穷竭搜索:全排列)

例如,如果给定数字 0, 1, 2, 4, 6 和 7,您可以编写整数对 10 和 2467。当然,有许多方法可以形成这样的整数对:210 和 764,204 和 176 等。最后一对整数之间的差的绝对值为 28,事实证明,通过上述规则形成的其他整数对都无法实现更小的差。给定一些不同的十进制数字,您可以通过选择这些数字的一个非空子集并以某种顺序编写它们来形成一个整数。那两个数相差最小的时候,是它们的值本身最接近的时候。对于每个测试案例,在一行上写下可以从给定数字中按照上述规则编写的两个整数的最小绝对差。

zaiyang遇见 600

POJ 2718 Smallest Difference (穷竭搜索)

穷竭搜索,bfs,c++,stl,string

ACM_10000h的专栏 1062

poj 2718 Smallest Difference 穷竭搜索之全排列

很久没有做搜索的题目了,一拿过题竟然还有点手生,去网上看了题解,学到了不少关于string这个类的简便用法,但是也确实慢,看到许多题解都在写用DFS和贪心求解,但是觉得实在太费事了,不想那么大费周章,想改一改优化优化看看全排列能不能过,没想到全排列竟然过了,确实有点水,不过也复习了一下全排列的用法,学了就忘    关于String的许多简单用法: /* 删除字符串中某一个特定的字符 s.era

江河湖海 376

POJ2718-Smallest Difference-穷竭搜索

原题链接 Smallest Difference Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10032 Accepted: 2752 DescriptionGiven a number of distinct decimal digits, you can form one integer b

HowieMen的博客 284

poj 2718 Smallest Difference(穷竭搜索dfs)

Description Given a number of distinct decimal digits, you can form one integer by choosing a non-empty subset of these digits and writing them in some order. The remaining digits can be written ...

weixin_34216036的博客 92

C++用穷竭搜索解POJ2718 Smallest Difference问题——《挑战程序设计竞赛》

POJ2718 Smallest Difference 题目链接: POJ2718 Smallest Difference 简单理解一下题目: 给定一些0-9中的数字,用这些数字组成两个数,求使得两个数之差最小的那种方案,输出两个数的差。 看一下输入: 1 0 1 2 4 6 7 输入的第一行表示有几个样例,接下来每一行就是一个样例,由于我们不知道每个样例有多少个数字,所以我用getchar()方法来输入。每输入一个字符就判断一下是不是换行符,如果是换行符就说明这个样例已经输入完毕,这里要注意的是,开头输

只想AC的博客 192

[POJ](2718)Smallest Difference ---- 穷竭搜索

Description Given a number of distinct decimal digits, you can form one integer by choosing a non-empty subset of these digits and writing them in some order. The remaining digits can be written down i

WangMeow --- ᶘ ᵒᴥᵒᶅ ฅ^•ﻌ•^ฅ 217

poj2718 Smallest Difference(穷竭搜索之next_permutation)

题意 给你几个位,用这些位凑成两个数, 问这两个数的差的绝对值最小是多少。 心得 n&lt;=10,n!=362W也可以做, 直接就用o(n!)的做法就好啦,穷举。 值得注意的几个地方: ①没说明位的个数,用字符串即读入挂处理。 ②用位数剪枝,显然一个是n/2位,一个是n-n/2位,    即二者最多相差1位。 ③前导0的处理,纯0不是前导0。 代码 #inclu...

小衣同学的博客 326

枚举搜索+贪心:POJ2718--Smallest Difference(解一)

poj2718是道典型的穷竭搜索题,解法很多,本文用最朴素的方法解答。

FOCE CODING 612
上一篇: SGU 271 - Book Pile
下一篇: POJ 2376 - Cleaning Shifts(贪心)
coco430
博客等级 码龄14年 9粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值