杨辉三角-一维数组与二维数组解法
这种问题是很有规律的 这里 总结一下 这类问题输出:对称 且数据相同的很多 就比如首位都是1
如果计算中间值遇到困难 可以试着把边界值单独输出
一维数组
//
// Created by 徐昌真 on 2024/11/11.
//
#include <stdio.h>
//一维数组
int main() {
int n; // 代表n个数
int cnt = 1;
scanf("%d", &n);
int count[100] = {0}; // 使用一维数组
count[1] = 1;
printf("%d\n", count[1]);
while(--n){
++cnt;
for (int i = cnt; i > 0; --i) { //逆向进行 避免覆盖数据
count[i] = count[i] + count[i - 1];
printf("%d ", count[i]);
}
printf("\n");
}
return 0;
}
二维数组
//
// Created by 徐昌真 on 2024/11/11.
//
#include <stdio.h>
//二维数组
int main() {
int n; //代表n个数
int cnt = 1;
scanf("%d",&n);
int count[100][100] = {0}; //初始化
count[0][0] = 1;
printf("%d\n", count[0][0]);
for (int j = 1; j < n; ++j) {
++cnt;
for (int i = 0; i < cnt; ++i) {
count[j][i] = (i == 0 || i == cnt - 1) ? 1 : count[j - 1][i - 1] + count[j - 1][i]; //特殊处理边界元素
printf("%d ",count[j][i]);
}
printf("\n");
}
return 0;
}