杨辉三角得规律:每行除了第一个元素和最后一个元素外,其余元素都等于上一行的同列的元素和它的左对角元素
代码块如图所示:
/**
* Return an array of arrays of size *returnSize.
* The sizes of the arrays are returned as *returnColumnSizes array.
* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
*/
int** generate(int numRows, int* returnSize, int** returnColumnSizes) {
int** triangle = (int**)malloc(sizeof(int*) * numRows);
int i = 0;
int j = 1;
for(i = 0;i < numRows;i++)
{
triangle[i] = (int*)malloc(sizeof(int) * j);
j++;
}
*returnSize = numRows;
i = 0;
j = 0;
for(i = 0;i < numRows;i++)
{
for(j = 0;j <= i;j++)
{
if(j == 0)
*(*(triangle + i) + j) = 1;
else if(j == i)
*(*(triangle + i) + j) = 1;
else{
*(*(triangle + i) + j) = *(*(triangle + i - 1) + j) + *(*(triangle + i - 1) + j - 1);
}
}
}
*returnColumnSizes = (int*)malloc(sizeof(int) * (*returnSize));
i = 0;
j = 1;
for(i = 0;i < (*returnSize);i++)
{
(*returnColumnSizes)[i] = j;
j++;
}
return triangle;
}