-1

私はプロジェクトオイラーの413番目の問題を解決しようとしていますが、オイラーは私を荒らそうとしていると思います。正直なところ、少なくとも誰かがブルートフォースを適用した場合、この問題は複雑ではないようです。

しかし、私のF関数は、引数が「10」の場合は右の「9」を返しますが、N = 10 ^ 3の場合は413を返します...キリストのために、これは問題のインデックスです。

他の誰かが同じ問題に直面しましたか?おそらく、F(10 ^ 3)の同じ数ですか?私は数値解法を求めていません。

ありがとう!

4

2 に答える 2

4

ブルートフォースを使用して解決する時間 (または、アプローチが機能しない理由):

数値ごとに 10 回の操作を使用すると、10^19 * 10 = 10^20 回の操作が必要になります。

3Ghz proc と 10 個のコアがあり、コアごとに 1 つの操作を実行できる場合は、必要になります

10^20/(3*10^9 * 10) 秒で解けます。

それは約100年です。

テストケースが正しいことを確認できる

于 2013-02-08T06:15:42.417 に答える
0

私の isOneChild(n) 関数が再帰的に数字を削除し、各レベルでチェックしたときに、413 を得ました。各部分文字列にインデックスを付けるように変更すると、389. という正解が得られました。

先頭に 0 がある場合、ソリューションは正しく分岐しません。たとえば、「00」は「0」と「0」に分岐してカウントが 2 になるはずですが、ソリューションは「0」にしかならず、カウントは 1 になります。同様に、「01」は「1」にのみ分岐します。 、誤って 0 のカウントを生成します。

最小限の修正: 値に加えて文字列を追跡します。

于 2013-02-08T06:44:31.800 に答える