求问百度百科上“时间和空间最优算法”的杨辉三角算法
程序代码:
/* 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