解题思路:
逐个列举最小项,最小项的最大值是n/k,n表示剩余数的大小,k表示还需要切割出来几个数。
当k=0且n=0,表示切割完成,答案加一,当k<=0且n<=0,停止递归
注意事项:
参考代码:
#include <bits/stdc++.h>
using namespace std;
int ans=0;
void solve(int n,int min,int k)
{
if(n==0&&k==0)
ans++;
if(n<=0||k<=0) return;
for(int i=min;i<=n/k;i++)
{
solve(n-i,i,k-1);
}
}
int main()
{
int n,k;
cin>>n>>k;
solve(n,1,k);
cout<<ans<<endl;
}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:624 |
哥德巴赫曾猜测 (C语言代码)浏览:2316 |
C二级辅导-等差数列 (C语言代码)浏览:808 |
半数集问题 (C语言代码)浏览:920 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:607 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:609 |
C语言训练-斐波纳契数列 (C语言代码)浏览:441 |
Manchester-蛇行矩阵,不需要数组,四个变量,解决问题浏览:5983 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:520 |
回文数字 (C++代码)浏览:879 |