湖州师范学院研究生吧 关注:2,621贴子:4,366
  • 0回复贴,共1

湖州师范学院881C语言设计题

只看楼主收藏回复

写一个C语言程序,实现杨辉三角的前n行。要求:不使用额外的存储空间。
解析:可以通过动态规划的方法,利用前一行的结果计算下一行的结果。每一行的首尾元素为1,其他元素等于上一行相邻两个元素之和。
代码:
c
复制代码
#include <stdio.h>
#include <math.h>
#define N 100
void print_pascal_triangle(int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j <= i; j++) {
printf("%d ", binomial_coefficient(i, j));
}
printf("
");
}
}
int binomial_coefficient(int n, int k) {
int result = 1;
if (k > n - k) {
k = n - k;
}
for (int i = 0; i < k; i++) {
result *= (n - i);
result /= (i + 1);
}
return result;
}
int main() {
int n;
printf("请输入杨辉三角的行数:");
scanf("%d", &n);
print_pascal_triangle(n);
return 0;
}


IP属地:浙江来自Android客户端1楼2023-10-25 22:39回复