自分の手で.
質問する
質問リンク:https://www.acmicpc.net/problem/2193
ポリシー
pinaryNum(n+1) = pinaryNum(n) + pinaryNum(n-1)
コード#コード#
#include<bits/stdc++.h>
using namespace std;
#define mine
int N;
long long dp[91];
long long pinaryNumber(int n){
if(n == 1) return 1;
if(n == 2) return 1;
long long& ret = dp[n];
if(ret != -1) return ret;
return ret = pinaryNumber(n-1) + pinaryNumber(n-2);
}
int main(){
ios_base::sync_with_stdio(false);
// freopen("../input.txt","rt",stdin);
memset(dp, -1, sizeof(dp));
cin >> N;
cout << pinaryNumber(N) << endl;
return 0;
}
感想
ルールさえ見つければ、問題はやりやすい.高校時代に点火式を解いたのを覚えていて、面白かったです.ただし、発生する可能性のあるオーバーフローを常にチェックし、basecaseを覚えておいてください.
Reference
この問題について(自分の手で.), 我々は、より多くの情報をここで見つけました https://velog.io/@gomster_96/백준-2193-이친수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol