文章

79

粉丝

221

获赞

46

访问

198.4k

头像
杨辉三角(递归)
P1392 西北工业大学
发布于2023年3月22日 16:57
阅读数 3.2k

#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即可。

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发