枚举库函数搜索:POJ2718--Smallest Difference(解二)

news/2024/5/19 1:34:53 标签: POJ2718, 搜索, 枚举, next_permutation

本题题意是把所给数分为两个非空集合,分别用这两个集合组成两个数,求组成数的最小绝对值。很快我们便能想到next_permutation()这个C++标准库函数。next_permutation(data,data+n)的功能把data[0]到data[n-1]的所有可能情况枚举出来。本题中,我们可以先将所有数字一一枚举,从中挑选出符合条件的分组做处理。原题链接

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;


int main(){
    int n,sum1,sum2,result;
    int data[10];
    cin>>n;
    while(n--){
        char c,s;
        int k=0;
        result=0x7f7f7f7f;
        memset(data,0,sizeof(data));
        while(cin>>skipws>>c>>noskipws>>s){
            data[k++]=c-'0';
            if(s=='\n') break;
        }
    sort(data,data+k);
    while(next_permutation(data,data+k)){    ///枚举数据的各种情况
        int i;
        sum1=sum2=0;
        if(!data[k/2]&&k>2||!data[0]&&k>3) continue;    ///【重要】排除首位数为0的情况
        for(i=0;i<k/2;i++) sum1=sum1*10+data[i];    ///计算第一个数
        for(;i<k;i++) sum2=sum2*10+data[i];    ///计算第二个数
        result=min(result,abs(sum1-sum2));    ///更新结果
    }
    cout<<result<<endl;
    }
    return 0;
}






http://www.niftyadmin.cn/n/1001005.html

相关文章

JavaScript邮箱系统开发(二)

2019独角兽企业重金招聘Python工程师标准>>> 一、一级导航点击 $(#J_B_main_block).on(click,a,function(e) {e.preventDefault(); // 阻止默认事件e.stopPropagation(); // 阻止事件冒泡$(this).parent().addClass(current).siblings().removeClass(cur…

深度优先搜索(DFS):POJ2718--Smallest Difference(解三)

本题题意是把所给数分为两个非空集合&#xff0c;分别用这两个集合组成两个数&#xff0c;求组成数的最小绝对值。显然这是一条穷竭搜索的题目&#xff0c;而深度优先搜索是最常用的方法。在解法二中&#xff0c;我使用了标准库函数next_permutation(),解法三中我将自己用深搜实…

linux下静态路由修改命令

linux下静态路由修改命令方法一&#xff1a;添加路由route add -net 192.168.0.0/24 gw 192.168.0.1route add -host 192.168.1.1 dev 192.168.0.1删除路由route del -net 192.168.0.0/24 gw 192.168.0.1add 增加路由del 删除路由-net 设置到某个网段的路由-host 设置到某台主机…

区间贪心:POJ2376--Cleaning Shifts

本题可理解为用N个线段去覆盖1-T的数轴&#xff0c;求最少使用的线段数。贪心算法每次都取当前的最佳值&#xff0c;适用本题。不少人想当然&#xff0c;认为每次用最长的线段来填&#xff0c;直到填满。举个反例&#xff1a;T为10&#xff0c;N为5&#xff0c;&#xff08;1&a…

jquery的事件处理

原生 //html <button id"btn" class"anniu">按钮</button>//js document.getElementById(btn).onclick clickCheckboxCallback;function clickCheckboxCallback(event) {var e event || window.event;var target e.target || e.srcElement;…

ubuntu编译最新版本WebKit

好久都没更新webkit 源码在ubuntu上编译了&#xff0c;网上搜了一下&#xff0c;基本上都是早期编译的webkit版本。可能是大家都去搞高大上的谷歌浏览器了吧。今天就以ubuntu14.04版本作为编译环境来讲讲webkit编译一、下载源码wget http://builds.nightly.webkit.org/files/tr…

Hadoop学习笔记(6) ——重新认识Hadoop

Hadoop学习笔记(6) ——重新认识Hadoop 之前&#xff0c;我们把hadoop从下载包部署到编写了helloworld&#xff0c;看到了结果。现是得开始稍微更深入地了解hadoop了。 Hadoop包含了两大功能DFS和MapReduce&#xff0c; DFS可以理解为一个分布式文件系统&#xff0c;存储而已…

初识贪心:POJ2393--Yogurt factory

本题乍看内容复杂&#xff0c;其实稍加分析便知可以用贪心的思想求解。酸奶厂一边生产的价格会变化&#xff0c;一边随着时间推移储存酸奶的费用不断增加。设第i周的酸奶生产储存费用为p&#xff0c;如果第i周没有卖出则到第i1周总费用为ps&#xff0c;和第i1周的生产费用可进行…