#include <iostream>
using namespace std;
typedef struct fibonacci {
int zero;
int one;
}Fibo;
const int MAX_INPUT = 40;
void Initialize(Fibo* fibo)
{
fibo[0].zero = 1;
fibo[0].one = 0;
fibo[1].zero = 0;
fibo[1].one = 1;
}
void Memorization(Fibo* fibo)
{
for (int i = 2; i <= MAX_INPUT; i++)
{
fibo[i].zero = fibo[i - 1].zero + fibo[i - 2].zero;
fibo[i].one = fibo[i - 1].one + fibo[i - 2].one;
}
}
int main(void)
{
Fibo fibo[MAX_INPUT + 1];
int input, T;
Initialize(fibo);
Memorization(fibo);
cin >> T;
for (int i = 0; i < T; i++)
{
cin >> input;
cout << fibo[input].zero << " " << fibo[input].one << endl;
}
}
내가 한건 메모리제이션으로 미리 답을 구해서 캐시하는 방법인데 이거 말구~
그때그때 다이나믹하게 풀어내는 방법이 있을까 ^^?
내가 어렴풋이 떠오르는건 재귀 트리에서 말단 노드의 갯수가 2^n-1개라는 것에 아이디어가 생각날듯 말듯한데..!! ^^;
배열 40개를 안쓰고..!
http://ideone.com/JeSR0Q
내 풀이.
http://ideone.com/nrriVj
풀이 수정함. N == 0일 때가 고려가 안되어 있어서 ㅋㄷ
많은걸 배우고가요 형
http://ideone.com/wEnRZ0
코세 성님 답지 않은 코드네요. 일반항 수식을 쓰려는 생각 자체는 참신하셨으나 부동소수점과 수치해석을 이용하였기 때문에 속도가 엄청 느릴 듯. 다만 메모리는 아끼는 군요. 160바이트요. ㅋㄷ
메모리 관리 단위가 1페이지(4KB)니깐 160바이트 아끼는 건 무의미하다고 보죠.
평소랑 딴판으로 놀기잼.
글쓴이가 배열 40개 안쓰고 라고 하길래. 변수를 아예 없애버렸쥐.
와 피보나치를 이런식으로도 되네