不是VIP会员,不能显示答案

题目解答

题目:
#include<iostream>
using namespace std;
int g(int m, int n,int x) {
int ans = 0;
int i;
if (n== 1)
return 1;
for (i = x; i <=m / n; i++)
ans += g(m - i,n - 1,i);
return ans;
}
int main() {
int t,m,n;
cin >> m >> n;
cout << g(m,n,0) << endl;
return 0;
}

输入: 7 3
输出:8
考点: 0
分析:
解答: 一个比较简单的递归程序。细心一些是可以直接计算出来的。
g(7,3,0)=g(7,2,0)+g(6,2,1)+g(5,2,2)
再分别展开计算各部分
g(7,2,0)=g(7,1,0)+g(6,1,1)+g(5,1,2)+g(4.1,3)=1+1+1+1=4
g(6,2,1)=g(5,1,1)+g(4,1,2)+g(3,1,3)=1+1+1=3
g(5,2,2)=g(3,1,2)=1
最后计算出结果
评论:
老师: 0