-
Notifications
You must be signed in to change notification settings - Fork 1
/
mini_Path(nf).c
56 lines (51 loc) · 1.27 KB
/
mini_Path(nf).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
55
56
#include <stdio.h>
#include <stdlib.h>
int ans[100] = {0};
void store( int points ) {
static int i = 0;
ans[i++] = points;
return;
}
void minimumPoints( int **arr, int r, int c, int x, int y, int points ) {
if( x < r && y < c ) {
points += arr[x][y];
printf("\nx = %d y = %d points = %d", x, y, points);
if( x == r-1 && y == c-1 ) {
store( abs(points) );
printf("\nPoints = %d",points);
}
minimumPoints( arr, r, c, x+1, y, points );
minimumPoints( arr, r, c, x, y+1, points );
}
}
int main( void ) {
int r, c, t, i, j, k, z, a;
int **arr;
printf("\nEnter the number of test cases:");
scanf("%d",&t);
for( i = 0; i < t; i++ ) {
printf("\nEnter the number of rows:");
scanf("%d",&r);
printf("\nEnter the number of columns:");
scanf("%d",&c);
arr = malloc( sizeof(int*) * r );
for( z = 0; z < r; z++ ) {
arr[z] = malloc( sizeof(int) * c );
}
printf("\nEnter the array:");
for( j = 0; j < r; j++ ) {
for( k = 0; k < c; k++ ) {
scanf("%d",&arr[j][k]);
}
}
minimumPoints( arr, r, c, 0, 0, 0 );
int min = ans[0];
printf("\nPrinting the array ans:");
for( a = 1; ans[a] != 0; a++ )
if( ans[a] < min )
min = ans[a];
printf("\nThe value of min: %d", min);
printf("\nThe maximum points required %d", min+1);
}
return 0;
}