私はFibonacci digits only
を与えている、私はK
フィボナッチ数を使用して番号を生成する方法の数を見つける必要があります。番号を生成する方法の数を確認
制約例:
1<=K<=10
1<=N<=10^9
:
N=14 and K=3
2つの方法があります。
:ここ(8,5,1) and (8,3,3)
は私の再帰的なソリューションです。
public static void num_gen(int i ,long val ,int used){
if(used==0){
if(val==n) ans++;
return ;
}
if(i==Fib.length) return ;
for(int j=0;j<=used;j++){
long x = j*Fib[i];
if(x+val<=n){
num_gen(i+1,x+val, used-j);
}
}
}
このソリューションは、NとK = 10の大きな値に対してタイムアウトします。より複雑なアルゴリズムを私に提供できますか?
これはどの言語ですか?正しい言語タグを含めるように質問を編集してください。 –
Javaのように見えます –
@JoachimPileborgが言語タグを更新しました... – user6250837