给定一个非负整数
numRows
,生成「杨辉三角」的前numRows
行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。
/** * Note: The returned array must be malloced, assume caller calls free(). */ int* getRow(int rowIndex, int* returnSize) { *returnSize = rowIndex + 1; int* C[rowIndex + 1]; for (int i = 0; i <= rowIndex; ++i) { C[i] = malloc(sizeof(int) * (i + 1)); C[i][0] = C[i][i] = 1; for (int j = 1; j < i; ++j) { C[i][j] = C[i - 1][j - 1] + C[i - 1][j]; } } return C[rowIndex]; }
给定一个非负整数
numRows
,生成「杨辉三角」的前numRows
行。在「杨辉三角」中,每个数是它左上方和右上方的数的和
int** generate(int numRows, int* returnSize, int** returnColumnSizes){ int i, j; int **ret = (int **)malloc(numRows * sizeof(int *)); *returnSize = numRows; *returnColumnSizes = (int *)malloc(numRows * sizeof(int)); for(i = 0; i < numRows; ++i) { ret[i] = (int *)malloc( (i+1) * sizeof(int) ); (*returnColumnSizes)[i] = i+1; for(j = 0; j < i+1; ++j) { if(j == 0 || j == i) { ret[i][j] = 1; }else { ret[i][j] = ret[i-1][j] + ret[i-1][j-1]; } } } return ret; }