/*
#include <stdio.h>
int main()
{
int n, a[11][11]={};
for(int i=1; i<=10; i++)
{
for(int j=1; j<=10; j++)
scanf("%d", &a[i][j]);
}
scanf("%d", &n);
}
#include <stdio.h>
int main()
{
int x=2, y=2, a[11][11]={};
for(int i=1; i<=10; i++)
{
for(int j=1; j<=10; j++)
scanf("%d", &a[i][j]);
}
while(1)
{
if(a[2][2]==2)
{
a[2][2]=9;
break;
}
a[x][y]=9;
if(a[x][y+1]==0) y++;
else if(a[x][y+1]==2)
{
y++;
a[x][y]=9;
break;
}
else if(a[x+1][y]==0) x++;
else if(a[x+1][y]==2)
{
x++;
a[x][y]=9;
break;
}
else if(a[x+1][y]==1 && a[x][y+1]==1) break;
else if(x==10 || y==10) break;
}
for(int i=1; i<=10; i++)
{
for(int j=1; j<=10; j++)
printf("%d ", a[i][j]);
printf("\n");
}
}
#include <stdio.h>
int main()
{
int n, x=1, a[100][100]={};
scanf("%d", &n);
for(int i=1; i<=n; i++)
{
if(i%2==)
for(int j=1; j<=n-i+1; j++)
}
}
재귀함수 recursive function
rec(n) : *을 n번 출력
: *출력 -> * n-1번 출력
: *출력 -> rec(n-1)
1. 종료조건
2. 재귀호출
#include <stdio.h>
void rec(int n)
{
if(n==0) return ;
printf("*");
rec(n-1); //재귀호출
}
int main()
{
rec(5);
}
rec(n) : n ~ 1 출력
: n출력 -> n-1부터 1 출력
: n출력 -> rec(n-1)
rec(n) : 1~n 합 리턴
: n+ (1 ~ n-1합 ) 리턴
: n + rec(n-1) 리턴
if(n==1) return 1;
rec(n) : 1~n 프린트
: (1~n-1), n
: rec(n-1), n 출력
#include <stdio.h>
void rec(int n)
{
if(n==0) return;
rec(n-1);
printf("%d\n", n);
}
int main()
{
int n;
scanf("%d", &n);
rec(n);
}
#include <stdio.h>
void rec(int n)
{
if(n==0) return;
printf("%d\n", n);
rec(n-1);
}
int main()
{
int n;
scanf("%d", &n);
rec(n);
}
rec(a, b) : a~b odd
: a~b-1, b
#include <stdio.h>
void rec(int a, int b)
{
if(a>b) return;
rec(a, b-1);
if(b%2==1) printf("%d ", b);
}
int main()
{
int a, b;
scanf("%d %d", &a, &b);
rec(a, b);
}
rec(n) : n+rec(n-1)
#include <stdio.h>
int rec(int n)
{
if(n==1) return 1;
return n + rec(n-1);
}
int main()
{
int n;
scanf("%d", &n);
printf("%d", rec(n));
}
#include <stdio.h>
int rec(int n)
{
if(n==1) return 1;
return n*rec(n-1);
}
int main()
{
int n;
scanf("%d", &n);
printf("%d", rec(n));
}
rec(n) : return rec(n-1) + rec(n-2)
#include <stdio.h>
int rec(int n)
{
if(n==1) return 1;
if(n==2) return 1;
return rec(n-1) + rec(n-2);
}
int main()
{
int n;
scanf("%d", &n);
printf("%d", rec(n));
}
rec(n) : (n/2)%2 n%2
: rec(n/2) n%2
#include <stdio.h>
void rec(int n)
{
if(n==0) return;
rec(n/2);
printf("%d", n%2);
}
int main()
{
int n;
scanf("%d", &n);
if(n==0) printf("0");
else rec(n);
}
#include <stdio.h>
void rec(int n)
{
printf("%d\n", n);
if(n==1)
return;
else if(n%2==1)
rec(3*n+1);
else
rec(n/2);
}
int main()
{
int n;
scanf("%d", &n);
rec(n);
}
#include <stdio.h>
void rec(int n)
{
if(n==1)
{
printf("1\n");
return;
}
else if(n%2==1) rec(3*n+1);
else rec(n/2);
printf("%d\n", n);
}
int main()
{
int n;
scanf("%d", &n);
rec(n);
}
rec1(i) : *을 i개 출력하는 함수
rec2(n) : i가 1씩 증가함?
*/
/*
#include <stdio.h>
void rec1(int i)// *을 i개 출력
{
if(i==0) return;
rec1(i-1);
printf("*");
}
void rec(int n)
{
if(n==0) return;
rec(n-1);
rec1(n); printf("\n");
}
int main()
{
int n;
scanf("%d", &n);
rec(n);
}
3702
3704
//메모이제이션 memo[n] = n에 관련된 정보
#include <stdio.h>
int memo[201]={};
int rec(int n)
{
if(memo[n]!=0) return memo[n];
if(n==1||n==2) return memo[n]=1;
return memo[n]=(rec(n-1) + rec(n-2))%10009;
}
int main()
{
int n;
scanf("%d", &n);
printf("%d", rec(n));
}
*/
#include <stdio.h>
int memo[51][51]={};
int rec(int r, int c)
{
if(memo[r][c]!=0) return memo[r][c];
if(r==1 || c==1) return memo[r][c]=1;
return memo[r][c] = (rec(r, c-1) + rec(r-1, c))%100000000;
}
int main()
{
int r, c;
scanf("%d %d", &r, &c);
printf("%d", rec(r, c));
}