zoukankan      html  css  js  c++  java
  • POJ 1011: Sticks

    #include <iostream>
    #include <string>
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #include <deque>
    #include <map>
    #define range(i,a,b) for(int i=a;i<=b;++i)
    #define LL long long
    #define rerange(i,a,b) for(int i=a;i>=b;--i)
    #define fill(arr,tmp) memset(arr,tmp,sizeof(arr))
    using namespace std;
    int n,len,stick[65];
    bool flag,vis[65];
    void init(){}
    bool cmp(int a,int b){
        return a>b;
    }
    void dfs(int d,int now,int u){
        if(flag)return;
        if(!now){
            int pos=0;
            while(vis[pos])++pos;
            vis[pos]=true;
            dfs(d+1,stick[pos],pos+1);
            vis[pos]=false;
            return;
        }
        if(now==len){
            if(d==n)flag=true;
            else dfs(d,0,0);
            return;
        }
        range(i,u,n-1)
            if(!vis[i]&&now+stick[i]<=len){
                if(!vis[i-1]&&stick[i]==stick[i-1])continue;
                vis[i]=true;
                dfs(d+1,now+stick[i],i+1);
                vis[i]=false;
            }
    }
    void solve(){
        while(cin>>n,n){
            int sum=0;flag=false;
            range(i,0,n-1){
                cin>>stick[i];
                sum+=stick[i];
            }
            sort(stick,stick+n,cmp);
            for(len=stick[0];len<sum;++len)
                if(!(sum%len)) {
                    fill(vis, 0);
                    dfs(0, 0, 0);
                    if (flag)break;
                }
            cout<<len<<endl;
        }
    }
    int main() {
        init();
        solve();
        return 0;
    }
    View Code
  • 相关阅读:
    慕课网-安卓工程师初养成-3-2 Java中的算术运算符
    慕课网-安卓工程师初养成-3-1 什么是运算符
    慕课网-安卓工程师初养成-2-13 练习题
    慕课网-安卓工程师初养成-2-12 如何在Java中使用注释
    慕课网-安卓工程师初养成-2-11 Java常量
    慕课网-安卓工程师初养成-2-10 Java中的强制类型转换
    试把一个正整数n拆分为若干个
    求解两个给定正整数m、n的最大公约数(m、n)
    统计n!尾部零
    横竖折对称方阵
  • 原文地址:https://www.cnblogs.com/Rhythm-/p/9338629.html
Copyright © 2011-2022 走看看