算法—杨辉三角

2020-04-23  本文已影响0人  土豆骑士

生成如此的三角形的矩阵,数据可用二维数组来存储展示,int **。

杨辉三角
思路:
  1. 第一层循环控制行数i : 默认[i][0] = 1,[i][i] = 1。
  2. 第二层循环控制列数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 ]
上一篇 下一篇

猜你喜欢

热点阅读