生成如此的三角形的矩阵,数据可用二维数组来存储展示,int **。
![](https://img.haomeiwen.com/i5277486/d4f9109e87f9c5c8.png)
思路:
- 第一层循环控制行数i : 默认[i][0] = 1,[i][i] = 1。
- 第二层循环控制列数j : triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j]。
int** generate1(int numRows, int* returnSize) {
*returnSize = numRows;
int **res = malloc(sizeof(int *)*numRows);
for (int i = 0; i < numRows; i++) {//行
res[i] = malloc(sizeof(int *)*(i+1));//每行的数据个数不一样
res[i][0] = 1; //第i行0列 都为1
res[i][i] = 1; //第i行i列 都为1
for (int j = 1; j < i; j++) {//列 j < i -> 三角形矩阵
res[i][j] = res[i-1][j-1] + res[i-1][j];
}
}
return res;
}
int main(int argc, const char * argv[]) {
int numRows = 5;
int returnSize;
int **returnResult;
returnResult = generate1(numRows, &returnSize);
for (int i = 0; i < returnSize; i++) {
printf("[");
for (int j = 0; j<=i; j++) {
printf(" %d ",returnResult[i][j]);
}
printf("]\n");
}
return 0;
}
//打印
杨辉三角问题
[ 1 ]
[ 1 1 ]
[ 1 2 1 ]
[ 1 3 3 1 ]
[ 1 4 6 4 1 ]
网友评论