Doing/C&C++

행렬 경로 찾기

YongArtist 2017. 10. 4. 15:15
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
#include<stdio.h>
 
int max(int x, int y)
{
    return (x>y)? x:y;
}
 
int matrixPath(int arr[][4], int i, int j, int *cnt) {
    
 if(i==0 && j==0)
    return arr[0][0];
    
 else if(i==0){
    //  printf("(((%d,%d)))\n",i,j);
     return (arr[0][j]+ matrixPath(arr, 0, j-1, cnt));
 }
 
 else if(j==0){
    //  printf("((%d,%d))\n",i,j);
     return (arr[i][0]+ matrixPath(arr, i-10, cnt));
 }
    
 else{
     printf("(%d,%d)\n",i,j);
     return (arr[i][j] + max(matrixPath(arr, i-1, j, cnt), matrixPath(arr, i, j-1, cnt)));
    }
 }
 
int main() {
    
   int cnt = 0;
   int arr[][4= {
            {6,7,12,5},
            {5,3,11,18},
            {7,17,3,3},
            {8,10,14,9}
    };
 
    printf("\n\n\n=====\n");
    printf("%d\n",matrixPath(arr,3,3,&cnt));
    printf("\n\n\n=====\n");
    printf("count = %d\n", cnt);
}
cs