[白俊]9095号:1.2.3加
1225 ワード
#include <iostream>
#include <vector>
using namespace std;
int t,n; // 테스트케이스 개수, 1 2 3합으로 나타낼 정수 n
vector<int> dp(1001); // 정수를 1,2,3의 합으로 나타내는 방법
int main()
{
dp[1]=1;
dp[2]=2;
dp[3]=4;
for(int i=4; i<11; i++){
dp[i]=dp[i-1]+dp[i-2]+dp[i-3];
}
//입력
cin>>t;
while(t--){
cin>>n;
cout<<dp[n]<<'\n';
}
return 0;
}
-dp配列は12個集める必要がありますか?+入力値に出力値を指定できます.
+最初は点火式がなかなか見つからなかった.まず1.2.3.4の状況を考えてみましょう
dp[1] = 1 //1
dp[2] = 2 //1+1, 2
dp[3] = 4 //1+2, 1+1+1, 2+1, 3
dp[4] = 7
//1+3,
1+1+2, 2+2,
1+2+1, 1+1+1+1, 2+1, 3+1
->dp[4]は1に3を加え、2に2を加え、3に1を加える.1から3までしかないので、dp[i]=dp[i-1]+dp[i-2]+dp[i-3]です.(ただしi>3)
Reference
この問題について([白俊]9095号:1.2.3加), 我々は、より多くの情報をここで見つけました https://velog.io/@lilybell77/백준-9095번-123-더하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol