Skip to content

Commit 22b0587

Browse files
regular commit
1 parent ee03c98 commit 22b0587

File tree

8 files changed

+138
-0
lines changed

8 files changed

+138
-0
lines changed

283.c

100755100644
File mode changed.

290.c

100755100644
File mode changed.

292.c

100755100644
File mode changed.

299.c

100755100644
File mode changed.

46.c

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,58 @@
11
#include <stdio.h>
2+
#include <stdlib.h>
23

34
/**
45
* Return an array of arrays of size *returnSize.
56
* Note: The returned array must be malloced, assume caller calls free().
67
*/
8+
9+
int count = 0;
10+
11+
void swap(int *a, int *b) {
12+
int tmp = *a;
13+
*a = *b;
14+
*b = tmp;
15+
}
16+
17+
void permuteRecursive(int *nums, int begin, int **res, int numsSize, int *top) {
18+
int i;
19+
20+
if (begin == numsSize) {
21+
for (i = 0; i < numsSize; ++i) res[*top][i] = nums[i];
22+
(*top)++;
23+
return;
24+
}
25+
for (i = begin; i < numsSize; ++i) {
26+
swap(&nums[i], &nums[begin]);
27+
permuteRecursive(nums, begin + 1, res, numsSize, top);
28+
swap(&nums[i], &nums[begin]);
29+
}
30+
}
731
int** permute(int* nums, int numsSize, int* returnSize) {
32+
int **res, i = numsSize;
33+
int top = 0;
34+
35+
*returnSize = numsSize;
36+
while (--i) (*returnSize) *= i;
37+
res = (int **)malloc(sizeof(int *) * (*returnSize));
38+
for (i = 0; i < (*returnSize); ++i) res[i] = (int *)malloc(sizeof(int) * numsSize);
39+
permuteRecursive(nums, 0, res, numsSize, &top);
40+
return res;
841
}
942

1043
int main()
1144
{
45+
int i, j, nums[] = {1, 2, 3};
46+
int **res, returnSize;
47+
48+
res = permute(nums, 3, &returnSize);
49+
50+
for (i = 0; i < returnSize; ++i) {
51+
for (j = 0; j < 3; ++j) {
52+
printf("%d\t", res[i][j]);
53+
}
54+
printf("\n");
55+
}
56+
1257
return 0;
1358
}

46_2.c

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
4+
/**
5+
* Return an array of arrays of size *returnSize.
6+
* Note: The returned array must be malloced, assume caller calls free().
7+
*/
8+
9+
void swap(int * nums, int x,int y)
10+
{
11+
int temp;
12+
temp=nums[x];
13+
nums[x]=nums[y];
14+
nums[y]=temp;
15+
}
16+
void perm(int* nums,int index, int l, int **result,int * p)
17+
{
18+
if(index==l)
19+
{
20+
for(int i=0;i<=l;i++)
21+
result[(*p)][i]=nums[i];
22+
(*p)++;
23+
return;
24+
}
25+
else
26+
{
27+
for(int i=index;i<=l;i++)
28+
{
29+
swap(nums,index,i);
30+
perm(nums,index+1,l,result,p);
31+
swap(nums,i,index);
32+
}
33+
}
34+
}
35+
int** permute(int* nums, int numsSize, int* returnSize)
36+
{
37+
*returnSize=1;
38+
int i,t,j,k=0;
39+
int *p =&k;
40+
for(i=1;i<=numsSize;i++)
41+
*returnSize=*returnSize*i;
42+
t=*returnSize;
43+
int ** result=(int **)malloc(t * sizeof(int *));
44+
for (i=0; i<t; i++)
45+
{
46+
result[i] = (int *)malloc(numsSize * sizeof(int));
47+
for(j=0;j<numsSize;j++)
48+
result[i][j]=0;
49+
}
50+
perm(nums,0,numsSize-1,result,p);
51+
return result;
52+
}
53+
54+
int main()
55+
{
56+
int i, j, nums[] = {1, 2, 3};
57+
int **res, returnSize;
58+
59+
res = permute(nums, 3, &returnSize);
60+
61+
for (i = 0; i < returnSize; ++i) {
62+
for (j = 0; j < 3; ++j) {
63+
printf("%d\t", res[i][j]);
64+
}
65+
printf("\n");
66+
}
67+
68+
return 0;
69+
}

64.c

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#include <stdio.h>
2+
3+
int minPathSum(int** grid, int gridRowSize, int gridColSize) {
4+
int i, res = 0;
5+
int tmp1, tmp2;
6+
7+
if (1 == gridRowSize) {
8+
for (i = 0; i < gridColSize; ++i) res += grid[0][i];
9+
return res;
10+
} else if (1 == gridColSize) {
11+
for (i = 0; i < gridRowSize; ++i) res += grid[i][0];
12+
return res;
13+
} else {
14+
tmp1 = minPathSum(grid, gridRowSize, gridColSize - 1);
15+
tmp2 = minPathSum(grid, gridRowSize - 1, gridColSize);
16+
res = tmp1 < tmp2 ? tmp1 : tmp2;
17+
return res + grid[gridRowSize - 1][gridColSize - 1];
18+
}
19+
}
20+
21+
int main()
22+
{
23+
return 0;
24+
}

README

100755100644
File mode changed.

0 commit comments

Comments
 (0)