一、简单的杨辉三角
1、找规律
仔细观察杨辉三角的图形,你能发现组成它的数有什么排列规律吗?
它的前几层是这样的:杨辉三角的两条斜边都是由数字1组成的,而其余的数则是等于它肩上的两个数之和,以此类推
二、代码实现
1、一言不合上代码
/*
思路:
1. 第一层循环控制行数i : 默认[i][0] = 1,[i][i] = 1
2. 第二层循环控制列数j : triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j]
*/
int** generate(int numRows){
int **res = (int **)malloc(sizeof(int*)*numRows);
for (int i = 0; i < numRows; i++) {
res[i] = (int *)malloc(sizeof(int)*(i+1));
res[i][0] = 1;
res[i][i] = 1;
for (int j = 1; j < i; j++) {
res[i][j] = res[i-1][j] + res[i-1][j-1];
}
}
return res;
}
int main(int argc, const char * argv[]) {
printf("杨辉三角\n");
int numRows = 10;
int **res = generate(numRows);
for (int i = 0; i < numRows; i++){
for (int j = 0; j < numRows-i; j++){
// 打印空格
printf(" ");
}
for (int k = 0; k <= i; k++){
//打印数
printf("%4d ", res[i][k]);
}
printf("\n");
}
return 0;
}