终于第一次自己写出了递归

来源:互联网 发布:剑灵召唤捏脸数据图 编辑:程序博客网 时间:2024/04/25 22:30

题目:

       给出有N个木棍,它们由数个相等长的木棍折断成的小木棍。现在要求把它们还原成原木棍,求其原木棍的最小长度是多长?


#include<iostream>#include<stdlib.h>#include<math.h>#include<stdio.h>#include<algorithm>using namespace std;int n;int go[1000];bool hi[1000];bool cmp(int a,int b){    return a>b;}bool make(int L,int curlen,int num){    cout<<L<<' '<<curlen<<' '<<num<<endl;    if (hi[num])    {        if (num==n-1)            return false;        else            return make(L,curlen,num+1);    }    if (curlen+go[num]==L)    {        hi[num]=true;        return true;    }    if (curlen+go[num]>L)    {        if (num==n-1)            return false;        return make(L,curlen,num+1);    }    hi[num]=true;    if (num==n-1)        return false;    else        return make(L,curlen+go[num],num+1);}int main(){    freopen("fuck.txt","r",stdin);    int i,j,k;    while (cin>>n)    {        memset(hi,0,sizeof(hi));        k=0;        for (i=0;i<n;i++)        {            cin>>go[i];            k+=go[i];        }        sort(go,go+n,cmp);        for (j=go[0];j<=k;j++)        {            memset(hi,0,sizeof(hi));            if (k%j)                continue;            for (i=0;i<k/j;i++)                if (!make(j,0,0))                    break;            if (i==k/j)            {                cout<<"The result is :  "<<j<<endl;                break;            }        }    }}


原创粉丝点击