求问百度百科上“时间和空间最优算法”的杨辉三角算法
程序代码:/* yh-rt1.c - 时间和空间最优算法 */
#include <stdio.h>
#include <stdlib.h>
int main()
{
int s = 1, h; // 数值和高度
int i, j; // 循环计数
printf("请输入你需要的杨辉三角的行数\n"); // 输出第一个 1
scanf("%d", &h); // 输入层数
printf("1\n"); // 输出第一个 1
for (i = 2; i <= h; s = 1, i++) // 行数 i 从 2 到层高
{
printf("1"); // 第一个 1
for (j = 1; j <= i - 2; j++) // 列位置 j 绕过第一个直接开始循环
//printf("%d ", (s = (i - j) / j * s));
printf("%d", (s = (i - j) * s / j)); // 这一行实在看不懂
printf("1\n"); // 最后一个 1,换行
}
getchar(); // 暂停等待
return 0;
}printf("%d", (s = (i - j) * s / j)); ,就是这一行实在看不懂
我会用二项式定理,以及上一行的对应数,以及前一列的对应数相加的方法求解……然而这个摘自百度百科的算法实在看不懂
求热心人帮忙
另这是求直角的杨辉三角,效果如下:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1









