ホームページ  >  記事  >  バックエンド開発  >  指定されたすべての文字列を等しくするための文字の再配置の数を最小限に抑える

指定されたすべての文字列を等しくするための文字の再配置の数を最小限に抑える

王林
王林転載
2023-08-31 13:25:06863ブラウズ

指定されたすべての文字列を等しくするための文字の再配置の数を最小限に抑える

ここでの目的は、サイズ n の文字列配列 Str に対して任意の回数の操作を行った場合に、すべての文字列を同一にすることができるかどうかを判断することです。 1 回のアクションで、文字列から任意の要素を取り出し、同じ文字列または別の文字列の任意の場所に戻すことができます。文字列を等しくできる場合は「Yes」を返し、そうでない場合は「No」を返し、必要な最小限の操作を返します。

###問題文###

指定されたすべての文字列が等しくなるように、文字の再配置の数を最小限に抑えるプログラムを実装します。

例 例 1

リーリー リーリー ###説明する###

配列 Str で提供される 3 つの文字列は、少なくとも 6 回の操作を通じて同じ文字列 mno に変換できます。

リーリー

例 例 2

リーリー リーリー ###説明する###

提供された文字列配列 Str を使用すると、同じ文字列を生成できません。

例例 3

リーリー リーリー ###説明する###

提供された配列 Str の 3 つの文字列はすべて、少なくとも 4 つの操作を通じて同じ文字列 xyz に変更できます。

解決方法

指定されたすべての文字列が等しくなるように文字のサイズを変更する回数を最小限に抑えるために、次の方法を使用します。

この問題の解決策は、指定されたすべての文字列が等しくなるように文字の再配置の回数を最小限に抑えることです。

すべての文字列を等しくするという目標は、文字がすべての文字列に均等に分散されていれば達成できます。つまり、配列内の各文字の頻度は、サイズ「n」の数で割り切れる必要があります。

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

すべての指定された文字列を等しくするために必要な最小限の文字再配置アルゴリズムは次のとおりです

ステップ 1

- 開始

ステップ 2

- 文字列が同一になるかどうかを確認する関数を定義します

  • ステップ 3 - すべての文字の頻度を保存する配列を定義します。ここで「フレ」を定義します。

  • ステップ 4 -提供された文字列配列を走査します。

  • ステップ 5 - 指定された文字列 Str の各文字を反復処理します。

  • ステップ 6 - 取得した頻度を更新します

  • ステップ 7 - 各文字の文字を確認します

  • ステップ 8 - 周波数がサイズ n の数で割り切れない場合は、「No」を出力します。

  • ステップ 9 - 各文字の頻度をサイズ n

  • で割ります。
  • ステップ 10 - 整変数「result」を定義し、その結果を最小操作数として保存します

  • ステップ 11 - 元の文字列「org」の各文字の頻度を保存します

  • ステップ 12 - 余分な文字の数も取得します

  • ステップ 13 - [はい] と出力し、結果が得られます。

  • ステップ 14 - 停止

  • 例: C プログラム これは、指定されたすべての文字列が等しくなるように再配置する文字の数を最小限に抑えるための上記のアルゴリズムの C プログラム実装です。

    リーリー ###出力### リーリー ###結論は###
  • 同様に、指定されたすべての文字列が等しくなるように、文字の再配置の数を最小限に抑えることができます。
  • この記事では、指定されたすべての文字列を等しくするために文字の再配置の回数を最小限に抑えるプログラムを取得するという課題に取り組みます。 指定されたすべての文字列が等しくなるように文字の再配置の数を最小限に抑えるための C プログラミング コードとアルゴリズムを提供します。

以上が指定されたすべての文字列を等しくするための文字の再配置の数を最小限に抑えるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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