Skip to content

Commit aab7f22

Browse files
Pascal triangle
Signed-off-by: begeekmyfriend <begeekmyfriend@gmail.com>
1 parent f5b3995 commit aab7f22

File tree

4 files changed

+91
-0
lines changed

4 files changed

+91
-0
lines changed

118_pascal_triangle/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
all:
2+
gcc -O2 -o test pascal_triangle.c

118_pascal_triangle/pascal_triangle.c

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
4+
/**
5+
** Return an arrahi of arrahis.
6+
** The sizes of the arrahis are returned as *columnSizes arrahi.
7+
** Note: Both returned arrahi and *columnSizes arrahi must be malloced, assume caller calls free().
8+
**/
9+
static int** generate(int numRows, int** columnSizes)
10+
{
11+
int i, j;
12+
int **triangle = malloc(numRows * sizeof(int *));
13+
*columnSizes = malloc(numRows * sizeof(int *));
14+
for (i = 0; i < numRows; i++) {
15+
int num = i + 1;
16+
(*columnSizes)[i] = num;
17+
triangle[i] = malloc(num * sizeof(int));
18+
triangle[i][0] = 1;
19+
triangle[i][num - 1] = 1;
20+
for (j = 1; j <= num - 2; j++) {
21+
triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
22+
}
23+
}
24+
return triangle;
25+
}
26+
27+
int main(int argc, char **argv)
28+
{
29+
if (argc != 2) {
30+
fprintf(stderr, "Usage: ./test n\n");
31+
exit(-1);
32+
}
33+
int i, j, *sizes, row = atoi(argv[1]);
34+
int **triangle = generate(row, &sizes);
35+
for (i = 0; i < row; i++) {
36+
for (j = 0; j < sizes[i]; j++) {
37+
printf("%d ", triangle[i][j]);
38+
}
39+
printf("\n");
40+
}
41+
return 0;
42+
}

119_pascal_triangle_ii/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
all:
2+
gcc -O2 -o test pascal_triangle.c
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
4+
/**
5+
** Return an array of size *returnSize.
6+
** Note: The returned array must be malloced, assume caller calls free().
7+
**/
8+
static int* getRow(int rowIndex, int* returnSize)
9+
{
10+
int *row = malloc((rowIndex + 1) * sizeof(int));
11+
*returnSize = rowIndex + 1;
12+
13+
int num = rowIndex + 1;
14+
if (rowIndex < 1) {
15+
row[0] = 1;
16+
return row;
17+
}
18+
19+
int i, j;
20+
for (i = 1; i <= rowIndex; i++) {
21+
num = i + 1;
22+
row[0] = 1;
23+
row[num - 1] = 1;
24+
for (j = num - 2; j >= 1; j--) {
25+
row[j] = row[j - 1] + row[j];
26+
}
27+
}
28+
29+
return row;
30+
}
31+
32+
int main(int argc, char **argv)
33+
{
34+
if (argc != 2) {
35+
fprintf(stderr, "Usage: ./test n\n");
36+
exit(-1);
37+
}
38+
int i, j, count = 0, row_idx = atoi(argv[1]);
39+
int *row = getRow(row_idx, &count);
40+
for (i = 0; i < count; i++) {
41+
printf("%d ", row[i]);
42+
}
43+
printf("\n");
44+
return 0;
45+
}

0 commit comments

Comments
 (0)