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