ホームページ  >  記事  >  バックエンド開発  >  C++ で書かれており、以下を中国語に翻訳します。 配列の一部を削除した後、K 個の配列の最小公倍数を計算します。

C++ で書かれており、以下を中国語に翻訳します。 配列の一部を削除した後、K 個の配列の最小公倍数を計算します。

王林
王林転載
2023-09-12 11:41:07879ブラウズ

C++ で書かれており、以下を中国語に翻訳します。 配列の一部を削除した後、K 個の配列の最小公倍数を計算します。

C 配列を使用する場合、サフィックスの一部を削除しながら、複数の配列間の最小共通合計を計算する必要がある場合があります。この記事では、C を使用してこの問題に対する効率的な解決策を検討します。

###文法###

コードへの実装に進む前に、まず選択したメソッドの構文を分析しましょう -

リーリー ###アルゴリズム###

ここでは、配列の接尾辞の一部を削除した後に最小公倍数を見つける問題を解決するための段階的なアルゴリズムを示します -

最初に関数 findMinimumCommonSum を定義します。この関数は 2 つのパラメーター (配列を表す 2 次元ベクトルである配列、および各配列の接尾辞から削除される要素の数を表す整数 suffixToRemove) を受け取ります。

  • 変数 minimumSum を初期化して最小共通合計を格納し、その初期値をより大きな値に設定します。

  • 配列ベクトル内の各配列を反復処理します。

  • 現在の配列のサイズを決定します。

  • 空の配列が残らないようにするには、現在の配列の合計サイズ以上の suffixToRemove の反復をスキップすることを検討する必要があります。この場合、すべての文字を削除しても意味のある出力は生成されません。

  • インデックス 0 からサイズ - suffixToRemove - 1 までの配列要素の合計を計算し、変数 currentSum に格納します。

  • currentSum が minimumSum より小さい場合、currentSum の値を使用して minimumSum を更新します。

  • すべての配列を走査した後、minimumSum には、指定されたサフィックスを削除した後の配列内の最小の共通合計が含まれます。

  • 方法 1: ブルート フォース クラッキング

  • このアプローチでは、削除するサフィックスの可能な組み合わせをすべて生成し、各組み合わせの合計を計算します。すべての組み合わせの中で最小の合計が最小公倍数になります。
###例### リーリー ###出力### リーリー

イラスト

ブルート フォース メソッドでは、サフィックスから指定された数の要素を削除した後、複数の配列間の最小の共通合計を見つけることが目標です。この方法には、削除されるサフィックスの可能なすべての組み合わせを生成し、各組み合わせの合計を計算することが含まれます。すべての組み合わせの最小の合計が最小公倍になります。

このアプローチを実装するには、findMinimumCommonSum という関数を定義します。この関数は、配列 (配列を表す 2D ベクトル) と suffixToRemove (各配列の接尾辞から削除される要素の数を表す整数) の 2 つのパラメーターを受け取ります。

関数内で、最小共通合計を格納するために変数 minimumSum を初期化します。初期値は、int 型の可能な最大値に設定されます。次に、配列ベクトル内の各配列を反復処理します。各配列について、そのサイズを決定し、suffixToRemove 値がそのサイズより小さいかどうかを確認します。

条件が満たされる場合、ブール ベクトルを使用して、考えられるすべての接尾辞の組み合わせを生成します。最後の suffixToRemove 要素に true を設定し、残りの要素に false を設定します。各配列について、そのサイズを決定し、suffixToRemove 値がそのサイズより小さいかどうかを確認します。

接尾辞ベクトル内の偽インジケーターに対応する配列値の合計を組み合わせごとに計算して続行します。すべての配列に対してこのプロセスを繰り返し、それに応じて currentSum を更新します。

最後に、currentSum と minimumSum を比較し、currentSum が小さい場合は minimumSum を更新します。すべての配列と組み合わせを反復した後、minimumSum には、指定されたサフィックスを削除した後の最小共通合計が含まれます。

方法 2: 効率的な並べ替え

このメソッドでは、配列を非降順で並べ替え、各配列の最初のサイズ (suffixToRemove 要素) の合計を計算します。すべての配列の最小の合計が最小の共通合計になります。

###例### リーリー ###出力### リーリー

イラスト

効率的なソート方法では、サフィックスから指定された数の要素を削除した後、複数の配列間の最小共通合計を見つけることが目標です。このアプローチは、配列をソートすると最小合計の計算が簡素化されるという事実を利用しています。

このアプローチを実装するには、findMinimumCommonSum という関数を定義します。この関数は、配列 (配列を表す 2D ベクトル) と suffixToRemove (各配列の接尾辞から削除される要素の数を表す整数) の 2 つのパラメーターを受け取ります。

関数内で、最小共通合計を格納するために変数 minimumSum を初期化します。初期値は、int 型の可能な最大値に設定されます。次に、配列ベクトル内の各配列を反復処理します。各配列について、そのサイズを決定し、suffixToRemove 値がそのサイズより小さいかどうかを確認します。

この前提条件が満たされたら、次のステップの 1 つは、配列内のすべての個々のコンポーネントを昇順で並べ替えることになります。このアプローチは主に、小さなオブジェクトが最初のセクションにあることを確認して、並べ替えと読みやすさを向上させるのに役立ちます。

次に、ソートされた配列内の最初のサイズ - suffixToRemove 要素の合計を計算します。これは、指定された数の要素をサフィックスから削除することに相当します。それに応じて currentSum を更新します。

最後に、currentSum と minimumSum を比較し、currentSum が小さい場合は minimumSum を更新します。すべての配列を反復処理した後、minimumSum には、指定されたサフィックスを削除した後の最小共通合計が含まれます。

この方法は、ブルート フォース メソッドのように、考えられるすべての組み合わせを生成して反復する必要がないため、非常に効率的です。代わりに、順序付けプロパティを利用して最小合計の計算を簡素化し、パフォーマンスを向上させます。

###結論は###

この記事では、接尾辞の一部を削除した後、C の K 配列間の最小の共通合計を見つける効率的な方法を検討します。ブルートフォースと効率的なソートという 2 つの方法について説明しました。ブルート フォース手法ではサフィックスのすべての組み合わせを生成しますが、効率的な並べ替え手法では配列を並べ替えて最初のいくつかの要素の合計を計算します。配列のサイズと削除する接尾辞要素の数に応じて、通常は効率的な並べ替えの方が効率的です。これらのメソッドを C プログラムに実装すると、複数の配列から最小の共通合計を簡単に見つけて、サフィックスの削除を効率的に処理できます。

以上がC++ で書かれており、以下を中国語に翻訳します。 配列の一部を削除した後、K 個の配列の最小公倍数を計算します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。