Introfor

조약돌 놓기 본문

Doing/C&C++

조약돌 놓기

YongArtist 2017. 10. 2. 21:46
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include<stdio.h>
#include<stdlib.h>
 
#define FALSE 0
#define TRUE 1
 
int n = 10;
int w[3][10= {0};
 
int Weight(int k, int p) {
    if (p < 3
        return w[p][k];
    else
        return w[0][k] + w[2][k];
 }
 
void Random() {
 for (int i = 0; i < 3; i++)
    for (int j = 0; j < n; j++)
        w[i][j] = (int)(rand()%21)-10;
 }
 
void Print() {
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < n; j++)
            printf("%d ",w[i][j]);
        printf("\n");
    }
    printf("\n");
 }
 
 int Is_Compare(int op, int cp) {
 
 if (op == 0) {
    if (cp == 1 || cp == 2)
        return TRUE;
    else
        return FALSE;
 }
 else if (op == 1) {
    if (cp == 0 || cp == 2)
        return TRUE;
    else
        return FALSE;
 }
else if (op == 2) {
    if (cp == 0 || cp == 1)
        return TRUE;
    else
        return FALSE;
 }
 else if (op == 3) {
    if (cp == 1)
        return TRUE;
    else
        return FALSE;
 }
 else
    return FALSE;
}
 
int Pebble(int k, int p){
    
    int tmp = 0;
    int max = 0;
    int boolean;
    int q;
    
    if (k == 0)
        return Weight(k, p);
    else {
        max = -999;
        for (q = 0; q < 4; q++) {
            boolean = Is_Compare(p, q);
            if (boolean) {
                tmp = Pebble(k - 1, q);
                if (tmp > max)
                max = tmp;
            }
        }
    }
 return max + Weight(k, p);
}
 
 
int main() {
    
int value, max = -999;
 
Random();
Print();
 
for (int p = 0; p < 4; p++) {
    value = Pebble(n - 1, p);
    if (max < value)
        max = value;
 }
 printf("Max is %d\n",max);
   
return 0;
}
cs


'Doing > C&C++' 카테고리의 다른 글

요셉의 환형 문제  (0) 2017.10.10
행렬 경로 찾기  (0) 2017.10.04
Russian Peasant Multiplication  (0) 2017.10.02
피보나치(반복, 재귀)  (0) 2017.09.18
하노이의 탑  (0) 2017.09.07
Comments