文章
79
粉丝
221
获赞
46
访问
198.4k
#include <iostream>
using namespace std;
void ShowCm(int m) {
if (m > 0) {
ShowCm(m - 1);
for (int i = 0, temp = 1; i < m + 1; i++) {
cout << temp << " ";
temp = temp * (m - i) / (i + 1);
}
cout << endl;
}
return;
}
int main() {
int m;
while (cin >> m)
ShowCm(m - 1);
return 0;
}
思路:
注:Cmn为组合数公式,Cmn=m!/[n!*(m-n)!],其中m在C右下,n在C右上。
ShowCm函数为输出Cmi,不包括m=0的情况。调用ShowCm时先输出上层C(m-1)i再输出本层Cmi,输出本层Cmi时根据递推公式Cm(n+1)=(m-n)/(n+1)*Cmn且Cm0=1,很容易输出Cmi,由于题目要求,当输入k时,需要输出C(m-1)i及以上层的情况,故调用ShowCm时参数m-1即可。
登录后发布评论
暂无评论,来抢沙发