문제해결기법 3

[C++] 문제해결기법 과제 3: 칸 채우기

3 x n 크기의 네모칸이 있다. 이 칸을 3 x 1 크기의 블럭을 이용하여 겹치지 않고 빼꼭하게 채우는 서로 다른 방법의 가짓수를 구하는 프로그램을 작성하시오. 이 문제를 푸는 .c/.cpp/.java 파일 하나를 제출하시오. 예를 들어, n = 1일때는 1가지, n = 2일 때는 1가지, n = 3일 때는 2가지임을 쉽게 알 수 있다. n=3인 경우를 세 블럭 OOO, XXX, MMM으로 채운 두 가지 경우가 아래 그림과 같다.  OXM    OOOOXM    XXXOXM    MMM 입력 표준 입력으로 받는다. n을 나타내는 정수 하나가 주어진다. n은 1 이상 45 이하이다.  출력 표준 출력으로 한 줄에 정수 하나를 출력한다. 이 정수는 문제의 조건을 만족하는 가짓수를 나타낸다. 예제 입력 11..

archive./Schoolwork 2020.08.05

[C++] 문제해결기법 과제 2: 포로 수용소 - Convex Hull 응용

제출은 .c/.cpp/.java 파일 하나만 제출해주세요. 2차원 좌표 (0, 0) 부터 (N, N)로 표현되는 포로 수용소 안에 M명의 포로들이 있다. 포로들은 이 좌표의 정수점 위에 있고, 한 점 위에 두명 이상의 포로가 있는 경우는 없다. 또, 한 직선 위에 세 명 또는 그 이상의 포로가 오는 경우도 없다. 포로들은 이동하지 않는다.  포로를 감시하는 것이 너무 힘들어서, 포로들의 일부에게 다른 포로를 감시하는 권한을 주려고 한다. 가능한 한 가장 적은 수의 포로에게 감시 권한을 주려고 하는데, 한 가지 제약 조건이 있다. 감시 권한이 없는 포로는, 감시 권한이 있는 포로 세 명을 이어서 만들어지는 삼각형 안에 반드시 들어 있어야 한다.  포로 수용소의 크기 N, 포로의 수 M이 주어졌을 때, 감시..

archive./Schoolwork 2020.08.05

[C++] 문제해결기법 과제 1 - Flow Network 응용

제출은 .c/.cpp/.java 파일 하나만 제출해주세요. a명의 사람과 b개의 일자리가 있다.  i번째 사람이 j번째 일을 할 수 있다면 (1  입력 표준 입력으로 입력을 받는다. 첫 줄에는 사람의 수 a와 일자리의 수 b, 사람과 일자리를 잇는 에지의 수 n이 주어진다. a, b는 모두 1 이상 100 이하이다. n은 1 이상 a*b 이하이다.  다음 n 줄에는 사람 i가 일 j를 할 수 있다는 정보를 나타내는 두 정수 i와 j가 사이에 공백을 두고 주어진다.  출력 사람과 일자리를 가장 많이 이어줄 수 있는 경우의 수를 출력한다.  예제 입력 13 3 31 32 33 3예제 출력 11  예제 입력 23 3 3 1 2 2 3 3 1 예제 출력 23 예제 입력 35 6 101 11 22 12 32 43..

archive./Schoolwork 2020.08.05
반응형