[白俊]1727号:2×nタイル2
1973 ワード
試行1:エラー
#include <iostream>
#include <vector>
using namespace std;
int n; //직사각형 타일 너비
int main()
{
//입력
cin>>n;
vector<int> dp(1001); // n별로 만들수 있는 경우의수를 배열로 생성
dp[0]=1;
dp[1]=1;
for(int i=2; i<=n; i++){
dp[i] = dp[i-1] + dp[i-2]*2;
}
cout<<dp[n]%10007<<'\n';
return 0;
}
-n 1から1000まで、dp[0]を要求する必要はありません.-型を求める演算は最後ではなくint範囲を超える場合がありますので、中間型演算が必要です
?点火式に影響はありませんか?どうして10007なの?
試行2:成功(補足が必要)
#include <iostream>
#include <vector>
using namespace std;
int n; //직사각형 타일 너비
int main()
{
//입력
cin>>n;
vector<int> dp(1001); //dp[n] = 각 너비가 n인 타일 채우는 경우의 수. n은 1부터 1000까지
dp[1]=1;
dp[2]=3;
for(int i=3; i<=n; i++){
dp[i] = dp[i-1] + dp[i-2]*2;
dp[n]%=10007;
}
cout<<dp[n]<<'\n';
return 0;
}
+モジュラー演算の変更-dp配列は1001に作成する必要はありません.nのみ生成することが望ましい.
-main関数ではなくfilltile()関数を個別に作成します.
Reference
この問題について([白俊]1727号:2×nタイル2), 我々は、より多くの情報をここで見つけました https://velog.io/@lilybell77/백준-11727번-2n-타일링-2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol