#include <stdio.h>
#include <stdlib.h>
/**
* Return an array of arrays.
* The sizes of the arrays are returned as *columnSizes array.
* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
*/
int** generate(int numRows, int** columnSizes) {
int **p_tri
= malloc(numRows
* sizeof(*p_tri
));//check omitted *columnSizes
= malloc(numRows
* sizeof(**columnSizes
)); for(int i = 0; i < numRows; ++i){
(*columnSizes)[i] = i + 1;
p_tri
[i
] = malloc((*columnSizes
)[i
] * sizeof(*p_tri
[i
]));
p_tri[i][0] = p_tri[i][(*columnSizes)[i] - 1] = 1;
}
for(int r = 2; r < numRows; ++r){
for(int c = 1; c < (*columnSizes)[r] - 1; ++c){
p_tri[r][c] = p_tri[r-1][c-1] + p_tri[r-1][c];
}
}
return p_tri;
}
int main(void){
int numRows = 5;
int *columnSizes = NULL;
int **p_tri = generate(numRows, &columnSizes);
for(int r = 0; r < numRows; ++r){
printf("%*s", numRows
- r
, ""); for(int c = 0; c < columnSizes[r]; ++c){
if(c)
}
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCi8qKgogKiBSZXR1cm4gYW4gYXJyYXkgb2YgYXJyYXlzLgogKiBUaGUgc2l6ZXMgb2YgdGhlIGFycmF5cyBhcmUgcmV0dXJuZWQgYXMgKmNvbHVtblNpemVzIGFycmF5LgogKiBOb3RlOiBCb3RoIHJldHVybmVkIGFycmF5IGFuZCAqY29sdW1uU2l6ZXMgYXJyYXkgbXVzdCBiZSBtYWxsb2NlZCwgYXNzdW1lIGNhbGxlciBjYWxscyBmcmVlKCkuCiAqLwppbnQqKiBnZW5lcmF0ZShpbnQgbnVtUm93cywgaW50KiogY29sdW1uU2l6ZXMpIHsKCWludCAqKnBfdHJpID0gbWFsbG9jKG51bVJvd3MgKiBzaXplb2YoKnBfdHJpKSk7Ly9jaGVjayBvbWl0dGVkCgkqY29sdW1uU2l6ZXMgPSBtYWxsb2MobnVtUm93cyAqIHNpemVvZigqKmNvbHVtblNpemVzKSk7Cglmb3IoaW50IGkgPSAwOyBpIDwgbnVtUm93czsgKytpKXsKCQkoKmNvbHVtblNpemVzKVtpXSA9IGkgKyAxOwoJCXBfdHJpW2ldID0gbWFsbG9jKCgqY29sdW1uU2l6ZXMpW2ldICogc2l6ZW9mKCpwX3RyaVtpXSkpOwoKCQlwX3RyaVtpXVswXSA9IHBfdHJpW2ldWygqY29sdW1uU2l6ZXMpW2ldIC0gMV0gPSAxOwoJfQoJZm9yKGludCByID0gMjsgciA8IG51bVJvd3M7ICsrcil7CgkJZm9yKGludCBjID0gMTsgYyA8ICgqY29sdW1uU2l6ZXMpW3JdIC0gMTsgKytjKXsKCQkJcF90cmlbcl1bY10gPSBwX3RyaVtyLTFdW2MtMV0gKyBwX3RyaVtyLTFdW2NdOwoJCX0KCX0KCXJldHVybiBwX3RyaTsKfQoKaW50IG1haW4odm9pZCl7CglpbnQgbnVtUm93cyA9IDU7CglpbnQgKmNvbHVtblNpemVzID0gTlVMTDsKCWludCAqKnBfdHJpID0gZ2VuZXJhdGUobnVtUm93cywgJmNvbHVtblNpemVzKTsKCglmb3IoaW50IHIgPSAwOyByIDwgbnVtUm93czsgKytyKXsKCQlwcmludGYoIiUqcyIsIG51bVJvd3MgLSByLCAiIik7CgkJZm9yKGludCBjID0gMDsgYyA8IGNvbHVtblNpemVzW3JdOyArK2MpewoJCQlpZihjKQoJCQkJcHV0Y2hhcignLCcpOwoJCQlwcmludGYoIiVkIiwgcF90cmlbcl1bY10pOwoJCX0KCQlwdXRzKCIiKTsKCQlmcmVlKHBfdHJpW3JdKTsKCX0KCWZyZWUocF90cmkpOwoJZnJlZShjb2x1bW5TaXplcyk7Cn0=
1
1,1
1,2,1
1,3,3,1
1,4,6,4,1