DP - 다이나믹 프로그래밍
구하기
1) n이 1,2,3.. 일때의 규칙성을 찾는다.
n=1 답:1
n=2 답:2
n=3 답:3
2) 점화식 구하기
// BJ - 11726 2*n 타일링
// 다이나믹 프로그래밍
#include <iostream>
using namespace std;
int arr[1001];
int dp(int x) {
if (x == 1) return 1;
if (x == 2) return 2;
if (arr[x] != 0) return arr[x];
return arr[x] = (dp(x - 1) + dp(x - 2)) % 10007;
//%10007은 오버플로우 방지
}
int main() {
int N;
cin >> N;
cout << dp(N);
}
비슷한 문제
11727
https://www.acmicpc.net/problem/11727
// BJ - 11727 타일 문제 2 : DP
#include <iostream>
#using namespace std;
int arr[1001];
int dp(int x) {
if (x == 1) return 1;
if (x == 2) return 3;
if (arr[x] != 0) return arr[x];
return arr[x] = (dp(x - 1) + 2 * dp(x - 2)) % 10007;
}
int main() {
int n;
cin >> n;
cout << dp(n);
}
'[알고리즘] 문제풀이 연습' 카테고리의 다른 글
[0705 복습] 백준2164 + 연습문제 5개 (0) | 2019.07.05 |
---|---|
[DP] 백준 - 2133 타일 문제 3*n !!복습필수!! (0) | 2019.07.04 |
백준 10219 - meats on the grill : reverse함수 등 (0) | 2019.07.04 |
3) 알고리즘 : 정렬 - 삽입정렬(Insertion Sort) (0) | 2019.07.03 |
백준 3052 - 나머지 : [c++ STL] set 이용 (0) | 2019.07.02 |