-
Notifications
You must be signed in to change notification settings - Fork 25
/
pascalTriangle.c
54 lines (48 loc) · 1.36 KB
/
pascalTriangle.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
int** generate(int numRows, int* returnSize, int** returnColumnSizes){
int** pRetVal = NULL;
(*returnSize) = numRows;
(*returnColumnSizes) = (int*)malloc((*returnSize) * sizeof(int));
if ((*returnColumnSizes) == NULL)
{
perror("malloc");
return pRetVal;
}
pRetVal = (int**)malloc((*returnSize) * sizeof(int*));
if (pRetVal == NULL)
{
perror("malloc");
free((*returnColumnSizes));
(*returnColumnSizes) = NULL;
return pRetVal;
}
int i;
int Combination;
int n, k;
for (n=1; n<=numRows; ++n)
{
(*returnColumnSizes)[n-1] = n;
pRetVal[n-1] = (int*)malloc(((*returnColumnSizes)[n-1]) * sizeof(int));
if (pRetVal[n-1] == NULL)
{
perror("malloc");
free((*returnColumnSizes));
(*returnColumnSizes) = NULL;
for (i=1; i<n; ++i)
{
free(pRetVal[i-1]);
pRetVal[i-1] = NULL;
}
free(pRetVal);
pRetVal = NULL;
return pRetVal;
}
memset(pRetVal[n-1], 0, ((*returnColumnSizes)[n-1]) * sizeof(int));
Combination = 1;
for(k=1; k<=n; ++k)
{
pRetVal[n-1][k-1] = Combination;
Combination = Combination * (n - k) / k;
}
}
return pRetVal;
}