現在、昇順シーケンスを含むプログラムを作成しようとしています。 Nは、シーケンスの大きさであり、Kは、最大数、例えば(C++)昇順シーケンスを効率的に作成する方法(ダイナルソリューション)
入力される:2,3-
出力:6(1,1 - 1,2 - 2,2 - 1,3 - 2,3 - 3,3)
私の現在のコードは正解を出力しますが、正解を得るには時間がかかります。これの最速のソリューションとはどのように私は動的なソリューションを行うのですか?ここでは遅いソリューションとのコードは次のとおりです。
#include<iostream>
using namespace std;
int n,k,cnt=0,mod=1000000007;
int seq(int n, int k, int first, int depth){
if(depth > n){
cnt = cnt + 1;
return cnt;
}
else {
for(int i=first;i<=k;i++){
seq(n,k,i,depth+1);
}
}
return cnt;
}
int main()
{
cin>>n>>k;
cout<<seq(n,k,1,1)%mod<<"\n";
return 0;
}
返された値はどうなりますか? –
「方法が長すぎます」と定義します。容認できる金額は何ですか? – tadman
1.0秒が許容時間です。現在の例は1.5 – Nson