问题标题: 1240 放梨子怎么写,谢谢

0
0

0
已采纳
陆麟瑞
陆麟瑞
资深天翼
资深天翼

动态规划做,搜索也行,就是太慢了。

for(int i=0; i<=n; i++)
        f[0][i]=1;//边界
        for(int i=1; i<=n; i++)
        {
            for(int j=1; j<=n; j++)
            {
                if(j<i) continue;
                for(int k=1; k<=m; k++)
                {
                    f[j][k]+=f[j-i][k-1];//状态转移方程
                }
            }
        }
 cout<<f[n][m]<<endl;//这是解
0
陈泉宏
陈泉宏
高级守护
高级守护
void dfs(int p,int q)
{
    int i;
    for(i=a[q-1];i<=p;i++)
    {
        if(i<n)
        {
            a[q]=i;
            p-=i;
            if(p==0&&q<=m)s++;
            else dfs(p,q+1);
            p+=i;
        }
    }
}

 

0
王安川
王安川
初级守护
初级守护

用递归

int main()

{

第一:总和=fang(m,n,0);

}

再整形函数 fang(int a,b,c)

{

当n=1时

返回

m>=j;

不然循环i=c~m-1

最后总和加上fang(m-i,n-1,i); 

}

输出就OK拉

0
0
我要回答