免責事項:ここで理論的な質問は、を探していない正確な答えて、ちょっとインスピレーションを求めて!配列を使用せずにいくつかの整数の中で最も出現している番号を取得してください
この検討:
機能繰り返し呼び出されると(同じシードが同じ整数を返す)種子に基づいて整数を返します。あなたの仕事は、最も頻繁に返される整数を見つけることです。十分に簡単ですね。
but:上記の関数の戻り値を格納するために配列やフィールドを使用することはできません!
例:次に
int mostFrequentNumber = 0;
int occurencesOfMostFrequentNumber = 0;
int iterations = 10000000;
for(int i = 0; i < iterations; i++)
{
int result = getNumberFromSeed(i);
int occurencesOfResult = magic();
if(occurencesOfResult > occurencesOfMostFrequentNumber)
{
mostFrequentNumber = result;
occurencesOfMostFrequentNumber = occurencesOfResult;
}
}
getNumberFromSeed()
場合戻る2,1,5,18,5,6と mostFrequentNumber
はとoccurencesOfMostFrequentNumber
なければならない5ためなければなりません3回返されます。
これは、2次元のリストを使用して結果と発生を簡単に解決できることがわかっています。しかし、何らかの配列、リスト、辞書などを使用することはできないと考えてください(おそらく、コードを実行しているシステムのメモリが限られているため、一度に十分な整数を格納できないこともあるし、先史時代のプログラミング言語コレクションの概念はありません)。
どうすればmostFrequentNumber
とoccurencesOfMostFrequentNumber
が見つかりますか? magic()
は何ですか? (。あなたがサンプルコードに固執する必要はありません原因のいずれかのアイデアは大歓迎です!)
EDIT:同じシードを返すよう私は、getNumber()
で返される整数はシードを使用して計算する必要があることを追加する必要があります同じ整数(すなわち、int result = getNumber(5);
)は、常に同じ値をresult
に割り当てます。
賢いアイデアですが、はるかに小さいアレイであっても、依然として配列です。配列を使用することはできません。 – GuyMontag
OK @GuyMontag。私が今追加したアップデートを見てみましょう。 –
更新ありがとうございますが、すべての解決策はおおよそのものか、配列に似た他の構造を使用しています。とにかく、私は適切な解決策を見つけ、あなたが興味を持っているかどうか見てみましょう – GuyMontag