0

さまざまな部分からテキストの文字列を作成しています。グループ A + グループ B + グループ C + グループ D。テキストはこの正確な順序でまとめられます。それぞれの文はユニークです。

各グループからランダムに 1 つの文を取り出し、それらをまとめて、一意のテキストの合計組み合わせが A*B*C*D になるようにします。ここで、A、B、C、D はそれぞれのグループの文の数です。

私の問題は、この方法で重複を生成しないことをどのように追跡し、可能なすべての組み合わせを使い果たしたことをいつ知ることができるかということです。

可能なすべての組み合わせをどこかに保存することは、これを行うにはかなり非効率的な方法のようです。では、どのようなオプションがありますか?

4

1 に答える 1

0

テキストのランダムな文字列が各グループから取得されるため、グループ内の文の開始位置と長さを辞書や HashSet などのコンテナーに格納するだけです。これはコンテナへのキーとして機能します。各グループのセンテンスの数が十分に少ない場合は、データを単一の整数値または long 値にパックできる可能性があります。それ以外の場合は、その構造またはクラスを定義します。コードはコンテナーを調べて、生成されたランダムな組み合わせが既に使用されているかどうかを確認する必要があります。使用されている場合は、一意のものが見つかるまでループします。組み合わせの合計数が十分に少なく、ユーザーがすべてを通過する可能性がある場合は、合計数を事前に計算し、コンテナーがその数に達しているかどうかを確認します。この場合、何らかの終了処理を実行する必要があります。

于 2013-07-30T14:26:32.257 に答える