본문 바로가기

백준/수학

백준 1146 - 지그재그 서기

728x90
728x90

지그재그 순열로 배치하는 경우의 수를 구하는 문제이다.

 

모듈러 연산에 유의하면서 경우의 수를 구하는 점화식을 구현하자.

 

전체 코드

더보기
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
#include <bits/stdc++.h>
 
#define mod 1000000
 
using namespace std;
using ll = long long;
 
int n;
int euler[101][101];
 
int zigzag(int n, int k);
 
int main()
{
    memset(euler, -1sizeof euler);
    euler[0][0= 1;
    cin.tie(0); ios::sync_with_stdio(false);
 
    cin >> n;
 
    if (n == 1)
    {
        cout << 1;
        return 0;
    }
 
    cout << zigzag(n, n) * 2 % mod;
}
 
 
int zigzag(int n, int k)
{
    if (!k)
    {
        if (!n)
            return 1;
        else
            return 0;
    }
    
    int &ret = euler[n][k];
 
    if (ret != -1)
        return ret;
    
    return ret = (zigzag(n, k - 1+ zigzag(n - 1, n - k)) % mod;
}
cs

728x90
728x90

'백준 > 수학' 카테고리의 다른 글

백준 11444 - 피보나치 수 6  (0) 2021.06.30
백준 1413 - 박스 안의 열쇠  (0) 2021.01.17
[ICPC] 백준 3948 - 홍준이의 친위대  (0) 2021.01.02
백준 11050 - 이항 계수 1  (0) 2020.11.30
백준 17268 - 미팅의 저주  (0) 2020.11.30