この質問には、目標がまったく異なりますが、合計のセットに適合する配列を見つけるための同様の設定があります。
A長さの配列を考えnます。配列には正の整数のみが含まれます。たとえばA = (1,1,2,2)。f(A)のすべての空でない連続したサブ配列の合計のセットとして定義しましょうA。この場合f(A) = {1,2,3,4,5,6}。作成する手順f(A) は次のとおりです。
の部分配列はAです(1), (1), (2), (2), (1,1), (1,2), (2,2), (1,1,2), (1,2,2), (1,1,2,2)。それぞれの合計は1,1,2,2,2,3,4,4,5,6です。したがって、このリストから取得するセットはです{1,2,3,4,5,6}。
逆の配列を除き、などの同じ長さの他の配列がない場合、A 一意の配列を呼び出します。例として、同じ合計セットを生成する長さの他の配列はありません。Bf(A) = f(B)Af((1,2,3)) = f((3,2,1)) = {1,2,3,5,6}3
要素が指定された整数sまたはである配列のみを考慮しますs+1。例えばもしs=1配列のみを含んでいるでしょう1と2。
仕事
所与のためのタスク、nおよびsその長さのユニークな配列の数をカウントすることです。それsはとの間にある1と仮定でき9ます。
配列の逆だけでなく、配列自体もカウントするべきではありません。
例
s = 1、答えは常にn+1です。
s = 2、上から数えて答えn = 1は次のとおりです。
2,3,6,10,20,32,52,86
s = 8、上から数えて答えn = 1は次のとおりです。
2,3,6,10,20,36,68,130
スコア
与えられたためにn、あなたのコードが出力のすべての値に対して答える必要がありますsから1にします9。スコアは、nこれが1分間で完了する最大値です。
テスト中
私のubuntuマシンでコードを実行する必要があるので、コードをコンパイルして実行する方法について、できるだけ詳細な指示を含めてください。
リーダーボード
- n = 24、Anders KaseorgによるRust(34秒)
- n = 16、Ourous in Clean(36秒)
- n = 14(Common Lispでの JRowanによる)(49秒)