https://www.acmicpc.net/problem/9095
1. 풀이과정 및 전체코드
d[4]를 기준(맨끝에 더하는수)로 정렬후
규칙을찾고 일반화 한다.
#include <bits/stdc++.h>
using namespace std;
/*
* DP
* 1. 테이블정의
* 2. 점화식 for문
*/
//1. d[i] : i를 1,2,3의 합으로 나타내는 방법의 수
/*
* d[1]=1
* d[2]=1+1 d[1] / 2 /
* d[3]=1+1+1 d[1] / 1+2 d[2]+1 / 2+1 d[2]+1 / 3 /
* 기준 : 맨뒤에 더하는 숫자
* d[4]=1+1+1+1, 3+1, 2+1+1, 1+2+1 : d[3]뒤에 +1 붙인것과 같음
* 1+1+2, 2+2 : d[2]뒤에 +2 붙인것과 같음
* 1+3 : d[1]뒤에 +3 붙인것과 같음
* d[i]=d[i-1]+d[i-2]+d[i-3]
*/
int d[12];
int tc,n;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> tc;
d[1] = 1;
d[2] = 2;
d[3] = 4;
d[4] = 7;
for (int i = 5; i < 12; ++i) {
d[i] = d[i - 1] + d[i - 2] + d[i - 3];
}
while (tc--) {
cin >> n;
cout << d[n] << "\n";
}
return 0;
}
'Algorithm > dp' 카테고리의 다른 글
백준 11659 구간합구하기4 c++ // dp, dp를 사용해야할때 아는방법 (0) | 2023.10.09 |
---|---|
백준 11726 2*n타일링 c++ // dp, 점화식세우기 (0) | 2023.10.09 |
백준 1149 RGB거리 c++ // dp, 테이블정의(2차원) (0) | 2023.10.09 |
백준 2579 계단오르기 c++ // dp , 제약조건이 있으면 2차원 dp로 테이블을 정의하라. (0) | 2023.10.09 |
백준 1463 1로만들기 c++ // dp 하는 방법 (0) | 2023.10.08 |