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

정사각형 수 더블릿

by tryotto 2019. 2. 18.
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 dp[300][300= { 0 };
int arr[300][300= { 0 };
 
int main() {
    int n;
    scanf("%d"&n);
    //문자열을 받은 뒤, 숫자 배열로 전환
    char str[300= { 0 };
    for (int i = 0; i < n; i++) {
        scanf("%s", str);
        int strlen = 0;
        for (int j = 0; j < 300; j++) {
            if (str[j] == '\0'break;
            arr[i][j] = (int)(str[j] - '0');
        }        
    }
    // 배열 dp 
    int num = 1,tmp,flag=0;
    while (num<n) {
        tmp = 0;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if (arr[i][j] == num&&arr[i + 1][j] == num
                    &&arr[i][j + 1== num&&arr[i + 1][j + 1== num) {
                    arr[i][j] = num + 1;
                    tmp++;
                }
            }        
        }
        num++;
        if (tmp != 0) {
            printf("%d %d\n", num, tmp);
            flag = 1;
        }            
    }
    if (flag == 0)
        printf("0");
}
cs


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

계단 오르기 더블릿  (0) 2019.02.19
점수 인플레이션 더블릿  (0) 2019.02.19
주사위 쌓기 더블릿  (0) 2019.02.18
완전순열 더블릿  (0) 2019.02.18
bits -더블릿  (0) 2019.02.16