zoukankan      html  css  js  c++  java
  • POJ 2718 Smallest Difference

    爆搜解法:

    一开始老是超时,用的手动搜索全排列,结果看一下题解,结果全部用的是next_permutation这个函数,就是用来做全排列的,改了一下,竟然过了,不得不说库函数还是蛮强的,推测一下它应该用的应该不是深搜实现的,不然应该不会这么快。(好想知道它用的什么算法呀!)

    这个函数在algorithm里面

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int num[50];
    int main()
    {
        int T;
        cin>>T;
        getchar();
        while(T--){
            char b,c;
            b=c=0;
            int ans=2100000000;
            int t=0;
            while(c!=10){
                scanf("%c",&b);
                if(b==10){break;}
                if(b>='0'&&b<='9'){num[t]=b-48;t++;}
                scanf("%c",&c);
            }
            int num1,num2;
            int k=t/2;
            while(next_permutation(num,num+t)){
                num1=num2=0;
                if(t>3&&num[0]==0){continue;}
                if(t>2&&num[k]==0){continue;}
                for(int i=0;i<k;i++){
                    num1=num1*10+num[i];
                }
                for(int i=k;i<t;i++){
                    num2=num2*10+num[i];
                }
                ans=min(ans,max(num1-num2,num2-num1));
            }
            cout<<ans<<endl;
        }
    }
    

      

  • 相关阅读:
    列举进程
    数据输出十六进制格式
    double精确度。。。。。
    ip查询详细地址
    通过up2date进行系统升级
    linux系统,安装DVD中所有RPMs包的方法
    修改服务状态
    /etc/sysctl.conf文件
    希望
    RHEL3.9GA virtio 设定方法
  • 原文地址:https://www.cnblogs.com/ZGQblogs/p/9102032.html
Copyright © 2011-2022 走看看