본문 바로가기
Computer Science

지구 온난화

by OKOK 2019. 2. 10.

1. 지구 온난화

2. 비트 연산

3. 사용하는 알파벳 체크

4. 어떤 것으로 했을 때, 많은 숫자를 읽을 수 있을까

5. 배열로

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
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
#include <stdio.h>
 
int n, m, index[256], B[21], word_bit[50];
char word[50][51];
 
int Big(int A, int B)
{
    if (A > B)
    {
        return A;
    }
    else
    {
        return B;
    }
}
 
int DFS(int number, int checked, int bit)
{
    if (m == checked)
    {
        int r = 0;
        for (int i = 0; i < n; i++)
        {
            if (((bit ^ word_bit[i]) | bit) == bit) r++;
        }
 
        return r;
    }
    else if (number < 21)
    {
        return Big(DFS(number + 1, checked + 1, bit | B[number]), DFS(number + 1, checked, bit));
    }
    else
    {
        return 0;
    }
}
 
int main(void)
{
    freopen("input.txt""r", stdin);
    int t = 0, tc = 0;
 
    for (int c = 'b', count = 0; c <= 'z'; c++)
    {
        if (c == 'e' || c == 'i' || c == 'o' || c == 'u'continue;
        index[c] = count++;
    }
    for (int i = 0, k = 1; i < 21; i++, k *= 2) B[i] = k;
 
    scanf("%d"&t);
    while (tc++ < t)
    {
        scanf("%d%d"&n, &m);
        for (int i = 0; i < n; i++)
        {
            scanf("%s", word[i]);
            word_bit[i] = 0;
            for (int p = 0; word[i][p]; p++)
            {
                word_bit[i] |= B[index[word[i][p]]]; // word_bit 다 더해둠
            }
        }
        printf("#%d %d\n", tc, DFS(000));
    }
 
}
cs

 



'Computer Science' 카테고리의 다른 글

디오판토스 방정식  (0) 2019.02.10
키 순서  (0) 2019.02.10
올해의 조련사  (0) 2019.02.10
Intersection  (0) 2019.02.10
팰린드롬  (0) 2019.02.10

댓글