zoukankan      html  css  js  c++  java
  • NYOJ--325--深度优先搜索--zb的生日

    /*
        Name: NYOJ--325--zb的生日
        Author: shen_渊 
        Date: 15/04/17 08:18
        Description: 输入时计算总质量,DFS搜索和总质量差值一般最接近的质量和,当val已经大于总质量一般时剪枝 
                    清空数组
                    DFS:选与不选 
    */
    #include<iostream> 
    #include<cstring>
    #include<algorithm>
    using namespace std;
    void dfs(int,int);
    int n,watermelon[23];
    int cut,min_val,v2;
    int main(){
    //    freopen("in.txt","r",stdin);
        while(cin>>n){
            cut = 0;
            min_val = 0xfffffff;
            memset(watermelon,0,sizeof(watermelon));
            int i;
            for(i=0; i<n; ++i){
                cin>>watermelon[i];
                cut += watermelon[i];
            }
            if(n==1){
                min_val = watermelon[0];
            }else{
                v2 = cut / 2;
                dfs(1,watermelon[0]);
            }
            cout<<min_val<<endl;
        } 
        return 0;
    }
    void dfs(int ct,int val){
        if(ct > n)return ;
        int t = abs(cut - 2*val);
        if(t<min_val)min_val = t;
        if(val > v2)return ;//继续增大val没什么用
        dfs(ct+1,val+watermelon[ct]) ;
        dfs(ct+1,val);
    }
  • 相关阅读:
    数据库连接池、事务
    JDBC、单元测试、DAO模式
    归并排序
    插入排序
    MySQL数据库
    JQuery
    JavaScript
    算法训练 连续正整数的和
    算法提高 寻找三位数
    算法训练 学做菜
  • 原文地址:https://www.cnblogs.com/langyao/p/7251887.html
Copyright © 2011-2022 走看看