메뉴 건너뛰기

Programing

BAEKJOON

2339

관리자 2020.04.11 09:16 조회 수 : 41

C++

#include <cstdio>

 

using namespace std;

int map_[30][30],N;

int check(int p,int s,int e, int t){

    int cnt=0;

    if(t==1){

       for(int i=s;i<=e;i++){

            if(map_[p][i]==2)

                return 0;

            if(map_[p][i]==1)

                cnt++;

       }

    }else{

        for(int i=s;i<=e;i++){

            if(map_[i][p]==2)

                return 0;

            if(map_[i][p]==1)

                cnt++;

       }

    }

    return cnt;

}

int serch(int x1,int y1,int x2,int y2,int t){

    int di=0,tr=0;

    for(int i=y1;i<=y2;i++){

        for(int j=x1;j<=x2;j++){

            if(map_[i][j]==1)

                tr++;

            if(map_[i][j]==2)

                di++;

        }

    }

    if(di==1&&tr==0)

        return 1;

    if(di==0||tr==0)

        return 0;

    int result=0;

    if(t){

        for(int i=y1;i<=y2;i++){

            if(check(i,x1,x2,t)){

                result+=serch(x1,y1,x2,i-1,0)*serch(x1,i+1,x2,y2,0);

            }

        }

    }

    else{

        for(int i=x1;i<=x2;i++){

            if(check(i,y1,y2,t)){

                result+=serch(x1,y1,i-1,y2,1)*serch(i+1,y1,x2,y2,1);

            }

        }

    }

    return result;

}

int main()

{

    scanf("%d",&N);

    for(int i=1;i<=N;i++){

        for(int j=1;j<=N;j++){

            scanf("%d",&map_[i][j]);

        }

    }

    int a;

    printf("%d",(a=serch(1,1,N,N,0)+serch(1,1,N,N,1))==0 ? -1:a);

    return 0;

}

 
번호 제목 글쓴이 날짜 조회 수
공지 안내사항 관리자 2019.12.21 163
45 2468 관리자 2019.12.21 8
44 2458 관리자 2020.04.11 44
43 2457 관리자 2020.04.11 47
42 2454 관리자 2020.04.11 43
41 2450 관리자 2020.04.11 40
» 2339 관리자 2020.04.11 41
39 2307 관리자 2019.12.21 8
38 2250 관리자 2019.12.21 8
37 2233 관리자 2019.12.21 6
36 2170 관리자 2019.12.21 7
35 2132 관리자 2019.12.21 7
34 2096 관리자 2019.12.21 8
33 2042 관리자 2020.04.11 45
32 2003 관리자 2020.04.11 39
31 1991 관리자 2019.12.21 8
30 1967 관리자 2019.12.21 6
29 1966 관리자 2020.04.11 45
28 1946 관리자 2020.04.11 39
27 1874 관리자 2020.04.11 43
26 1839 관리자 2020.04.11 44
25 17611 관리자 2019.12.21 7
24 1753 관리자 2019.12.21 8
23 1742 관리자 2020.04.11 6
22 1720 관리자 2020.04.11 6
21 16210 관리자 2020.04.11 57
20 16201 관리자 2020.04.11 44
19 15971 관리자 2019.12.21 6
18 14865 관리자 2019.12.21 8
17 14503 관리자 2019.12.21 7
16 14502 관리자 2019.12.21 6
위로