본문 바로가기
알고리즘/DP

2698 인접한 비트의 갯수

by tryotto 2019. 7. 6.
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
#include <stdio.h>
 
int arr[1005][2= { 0 };
int dp[105][105][2= { 0 };
 
int main() {
    int t;
    scanf("%d"&t);
 
    int maxN = 0, maxK = 0;
    for (int i = 1; i <= t; i++) {
        scanf("%d %d"&arr[i][0], &arr[i][1]);
 
        if (maxN < arr[i][0]) 
            maxN = arr[i][0];
        if (maxK < arr[i][1])
            maxK = arr[i][1];
    }
 
    dp[1][0][0= 1;
    dp[1][0][1= 1;
    for (int i = 2; i <= maxN; i++) {
        for (int j = 0; j <= maxK; j++) {
            dp[i][j][0= dp[i-1][j][0+ dp[i-1][j][1];
 
            if(j!=0)
                dp[i][j][1= dp[i - 1][j][0+ dp[i - 1][j - 1][1];
            else 
                dp[i][j][1= dp[i - 1][j][0];
        }
    }
 
    for (int i = 1; i <= t; i++) {
        int n = arr[i][0];
        int k = arr[i][1];
        int rst = dp[n][k][0+ dp[n][k][1];
 
        printf("%d\n", rst);
    }
}
cs


'알고리즘 > DP' 카테고리의 다른 글

6359 만취한 상범  (0) 2019.07.06
9507 Generations of Tribbles  (0) 2019.07.06
11726 2*n 타일링  (0) 2019.07.06
2163 초콜릿 자르기  (0) 2019.07.05
2167 2차원 배열의 합  (0) 2019.07.05