top of page

소스 코드 제출

공개·회원 50명

250731

//#include<stdio.h>

//

//

//

//int main() {

//

// int n, a,b, sum=0;

// int arr[100] = {0}, count[100] = {0}, start[100] = {0};

//

// scanf("%d", &n);

//

// for (int i=0; i<2*(n-1); i=i+2) {

// scanf("%d %d", &a, &b);

// arr[i] = a;

// arr[i+1] = b;

// count[a]++;

// count[b]++;

// }

//

// 연결된 노드를 찾기 위해 시작 지점 인덱스 만들기

// for (int i=1; i<=n; i++) {

// sum += count[i];

// start[i] = sum;

// }

//

//

// for (int i=0; i<2*(n-1); i++) {

//

// }

//

// for (int i=1; i<=n; i++) {

// printf("%d ", start[i]);

// }

//

//

//

//

//

//

// return 0;

//

//}

//

//



//#include<stdio.h>

//

//int cnt1=0, cnt2=0;

//int memo[99] = {1,1,1};

//

//int fib(int n);

//

//int main() {

// int v;

// scanf("%d", &v);

//

// fib(v);

// fibonacci(v);

//

// printf("%d %d", cnt1, cnt2);

//

// return 0;

//}

//

//int fib(int n) {

// //printf("n: %d\n",n);

// if (n==1 || n==2) {

// cnt1++;

// return 1;

// }

//

//

// return fib(n-1) + fib(n-2);

//}

//

//

//int fibonacci(int n) {

//

// for (int i=3; i<=n; i++) {

// memo[i] = memo[i-1] + memo[i-2];

//

// cnt2++;

// }

//

// return memo[n];

//

//

//}


#include<stdio.h>


int memo[99999] = {0};


int main() {


int a,b,c, temp;

scanf("%d %d %d", &a, &b, &c);

while (a!=-1 || b!=-1 || c!=-1) {

temp = w(a,b,c);

printf("w(%d, %d, %d) = %d\n", a,b,c,temp);

scanf("%d %d %d", &a, &b, &c);

}



return 0;

}



int w(int a, int b, int c) {

int v, d,e,f,g;

if (a<=0 || b<=0 || c<=0) {

return 1;

}

v = a*10000+b*10+c;

if (memo[v]!=0) {

printf("v:%d abc: %d %d %d\n",v,a,b,c);

return memo[v];

}

else if (a>20 || b>20 || c>20) {

memo[20220] = w(20, 20, 20);

return memo[2220];

}

else if (a<b && b<c) {

d = a*10000+b*10+(c-1);

e = a*10000+(b-1)*100+(c-1);

f = a*10000+(b-1)*100+c;

memo[d] = w(a,b,c-1);

memo[e] = w(a,b-1,c-1);

memo[f] = w(a,b-1,c);

return memo[d] + memo[e] - memo[f];

}

else {

d = (a-1)*10000+b*10+c;

e = (a-1)*10000+(b-1)*10+c;

f = (a-1)*10000+b*10+(c-1);

g = (a-1)*10000+(b-1)*10+(c-1);

memo[d] = w(a-1, b, c);

memo[e] = w(a-1, b-1, c);

memo[f] = w(a-1, b, c-1);

memo[g] = w(a-1, b-1, c-1);

// printf("m: %d\n", memo[d] + memo[e] + memo[f] + memo[g]);

return memo[d] + memo[e] + memo[f] - memo[g];

}


}


int getIdx(int n1, int n2, int n3) {



}

6회 조회
주소 : 경기도 용인시 광교중앙로 302 블루 스퀘어 602호
연락처 : 031) 216 - 1546 ,     031) 215 - 1546
사업자등록번호 : 465-92-00916
​학원 등록 제 4603호
bottom of page