0〜999の数字が厳密に増加する順番で配列があります。例えば間隔を最大にする番号を選択する
int[] array = {0, 24, 55, 124, 200, 259, 400, 503, 666, 797};
私は何をしているのは、これらの選んだ数字の間の距離の最小値が最大となるように、N個の数字を選ぶ機能を実装しています。
たとえば、Nが3の場合、選択された数値は0,400,797であり、間隔は400と397です。戻り値は397です(最大化する必要があります)。他の数値を選択すると、戻り値は397以下になります。
私は再帰を使用して実装したいと思いますが、それをコーディングするのは苦労しています。私を助けてくれませんか?
$ n $の上限はいくらですか?あなたはどんな複雑さを期待していますか?何を試しましたか? – sashas
この問題は既に解決されています。次のスレッド[値の最小距離が最大になるようにサイズkのサブセットを検索する]を参照してください(http://stackoverflow.com/questions/22424885/find-subset-of-size-k-such-that-the-minimum -distance-between-values-is-maximum) –
Nが3の場合、最初の要素、最後の要素、中間点に最も近い要素を選択する必要があります。これはバイナリ検索であるため、O(log n)。 Nが高い場合は、同様のことがあります。 –