https://www.acmicpc.net/problem/1003
#include <iostream>
using namespace std;
int z = 0;
int one = 0;
int zo[41][2];
int arr[41];
long long f(int n) {
if (n == 0) {
return arr[0];
}
else if (n == 1) {
return arr[1];
}
if (arr[n] != -1) {
return arr[n];
}
else {
arr[n] = f(n - 2) + f(n - 1);
zo[n][0] = zo[n - 2][0] + zo[n - 1][0];
zo[n][1] = zo[n - 2][1] + zo[n - 1][1];
return arr[n];
}
}
int main() {
int t = 0;
cin >> t;
fill_n(arr, 41, -1);
arr[0] = 0;
arr[1] = 1;
zo[0][0] = 1;
zo[0][1] = 0;
zo[1][0] = 0;
zo[1][1] = 1;
for (int i = 0; i < t; i++) {
int n;
cin >> n;
f(n);
cout << zo[n][0] << ' ' << zo[n][1] << '\n';
}
return 0;
}
'algorithm > DP' 카테고리의 다른 글
[프로그래머스] 2 * n 타일링 (0) | 2020.08.24 |
---|---|
[백준/9461] 파도반 수열 (0) | 2020.04.03 |
[백준/2748] 피보나치 수 2 (0) | 2020.04.03 |
댓글