标题:有效降低时间,增加效率
只看楼主
汪悟明
Rank: 2
等 级:论坛游民
帖 子:8
专家分:12
注 册:2012-5-27
 问题点数:0 回复次数:1 
有效降低时间,增加效率
//小石头的存钱罐
#include "stdio.h"


int count(int n,int plus,int minu,int half)
{
    int sum=1;
    if(n==1)
        return 1;
    if(plus>=half)
        return 1;
    else if(plus>minu)
        sum*=(count(n-1,plus,minu+1,half)+count(n-1,plus+1,minu,half));
    else
        sum*=count(n-1,plus+1,minu,half);
    return sum;
}


int main()
{
    int total,n,plus,minu,half,sum;
    scanf("%d",&total);
    for(int i=0;i<total;i++)
    {
        scanf("%d",&n);
        half=n/2;
        plus=1;
        minu=0;
        sum=count(n-1,plus,minu,half);
        printf("Case #%d: %d\n",i+1,sum);
    }
    return 0;
}


原题:小石头有一个存钱罐和很多很多个硬币(可以理解为无限多),某个无聊的周末,他决定玩一个小游戏。游戏有n个操作,将一个硬币放入罐子或者将一个硬币取出罐子。罐子最开始是空的,要求完成这n个操作的时候罐子也是空的。求有多少种不同的操作序列。
搜索更多相关主题的帖子: include return 存钱罐 count 
2014-04-19 18:02
汪悟明
Rank: 2
等 级:论坛游民
帖 子:8
专家分:12
注 册:2012-5-27
得分:0 
大神呢。。。total是总共多少组数据,n是每组数据提供的拿放次数,其他的就是字面意思
2014-04-20 13:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-430323-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.566018 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved