반응형
https://www.acmicpc.net/problem/2748
대표적인 dp문제였습니다.
Code
1. Top down dp
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll fibo[91], n;
ll dp(int num){
if(num == 1 || num == 2) return 1;
ll &ret = fibo[num];
if(ret) return ret;
ret = 0;
return ret = dp(num - 1) + dp(num - 2);
}
int main(){
cin >> n;
cout << dp(n);
}
2. bottom up dp
#include <iostream>
using namespace std;
int main(){
int num;
cin >> num; //방 개수
long long *arr = new long long[num+1];
if(num == 0 ||num == 1)
{
cout<< num;
return 0;
}
arr[0] = 0;
arr[1] = 1;
for(int i = 2; i<=num; i++)
{
arr[i] = arr[i-2] + arr[i-1];
}
cout<<arr[num];
}
'Algorithm > DP(Dynamic Programing)' 카테고리의 다른 글
(C++) - 백준(BOJ) 11051번 : 이항 계수2 (0) | 2017.02.05 |
---|---|
(C++) - 백준(BOJ)코딩 2579번 : 계단오르기 답 (0) | 2017.01.29 |
(C++, Python3) - 백준(BOJ) 11055번 :가장 큰 증가 부분 수열 답 (0) | 2017.01.27 |
(C++) - 백준(BOJ) 13699번 : 점화식 (0) | 2016.11.15 |
(C++) - 백준(BOJ) 9657번 : 돌 게임 3 답 (0) | 2016.11.05 |