この質問では、英数字の配列を使用してリンドンのすべての単語を検索します。
始める前に、まずリンドンという言葉の定義を理解しましょう。
すべての単語はリンドン語であり、厳密に辞書順にすべてのサイクルよりも小さくなります。
以下はリンドンの言葉の例です。
ab - "ab" は、そのすべての順列 "ba" よりも辞書編集的に厳密に小さいです。
89 - 「89」のローテーションは「98」であり、厳密には辞書編集上「89」より大きくなります。
abc - 「abc」の回転は「bca」と「cab」であり、厳密には「abc」よりも大きくなります。
以下はリンドン語以外の単語の例です。
aaa - 「aaa」の回転はすべて同じであるため、aaa は非リンデン語です。
-
bca - 「abc」はそれより回転が小さいため、「bca」は非リンデン語です。
- 英数字を含む長さ K の文字配列が与えられています。さらに、正の整数を含む n が与えられます。タスクは、配列で指定された英数字を使用して、長さ n のリンドン語をすべて見つける必要があることです。 ###例### ######入力###### リーリー ######出力###### リーリー
説明- 配列文字を使用して、長さ 3 のすべての Lydon 単語を生成します。
######入力###### リーリー ######出力###### リーリー説明 - 「01」は、0 と 1 を使用して形成できる唯一の Lyndon 単語です。
######入力###### リーリー ######出力###### リーリー説明- a、c、d 文字を使用して長さ 2 のリンドン語を生成します。
方法1 デュバルのアルゴリズムと呼ばれる、リンデン語を生成する特別なアルゴリズムがあります。
###アルゴリズム###ステップ 1 - リンドン語の長さを表す「n」値と、リンドン語の作成時に使用する文字を含む chars 配列を定義します。
ステップ 2- リストを並べ替えます。
ステップ 3 - 「インデックス」リストを -1 で初期化します。
ステップ 4- インデックス リストが空でなくなるまで繰り返します。
ステップ 5 - 「インデックス」リストの最後の要素を 1 増やします。
ステップ 6- list_size が n に等しい場合、リストの値を出力します。
ステップ 7- 長さが n になるようにインデックスをリストに追加します。
ステップ 8- リストの最後の要素が配列の最後のインデックスと等しい場合は、リストから削除します。 ###例### 入力例を使って例を理解しましょう。
並べ替えられたリストは ['a', 'c', 'd'] になります。
インデックス リストは、最初の反復で [-1] から [0] に更新されます。その後、インデックスの長さは 2 になり、[0, 0] になります。
2 回目の反復では、リストが [0, 1] に更新され、最初の Lyndon 単語「ac」が見つかります。
3 回目の反復では、リストは [0, 2] になり、2 番目の Lyndon 単語は「ad」になります。また、最後の要素は array_len -1 に等しいため、リストから削除されます。
4 回目の反復では、リストは [1] になります。 [1,1]は後日更新します。
次の反復では、リストは [1, 2] になり、3 番目の Lyndon ワー「cd」が見つかります。
リーリー ###出力### リーリー
時間計算量- O(nlogn)。最初に「文字」リストをソートする必要があるためです。
空間複雑度- - リストに n 個のインデックスを格納するため、O(n) になります。
-
Duval アルゴリズムは、長さ n のリンドン語を生成する最も効率的な方法です。ただし、配列文字のみを使用するようにメソッドをカスタマイズしました。
以上が長さ n のリンドン語を生成する Python プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

C#は、開発効率とクロスプラットフォームのサポートを必要とするプロジェクトに適していますが、Cは高性能で基礎となるコントロールを必要とするアプリケーションに適しています。 1)C#は、開発を簡素化し、ガベージコレクションとリッチクラスライブラリを提供します。これは、エンタープライズレベルのアプリケーションに適しています。 2)Cは、ゲーム開発と高性能コンピューティングに適した直接メモリ操作を許可します。

C継続的な使用の理由には、その高性能、幅広いアプリケーション、および進化する特性が含まれます。 1)高効率パフォーマンス:Cは、メモリとハードウェアを直接操作することにより、システムプログラミングと高性能コンピューティングで優れたパフォーマンスを発揮します。 2)広く使用されている:ゲーム開発、組み込みシステムなどの分野での輝き。3)連続進化:1983年のリリース以来、Cは競争力を維持するために新しい機能を追加し続けています。

CとXMLの将来の開発動向は次のとおりです。1)Cは、プログラミングの効率とセキュリティを改善するためのC 20およびC 23の標準を通じて、モジュール、概念、CORoutinesなどの新しい機能を導入します。 2)XMLは、データ交換および構成ファイルの重要なポジションを引き続き占有しますが、JSONとYAMLの課題に直面し、XMLSchema1.1やXpath3.1の改善など、より簡潔で簡単な方向に発展します。

最新のCデザインモデルは、C 11以降の新機能を使用して、より柔軟で効率的なソフトウェアを構築するのに役立ちます。 1)ラムダ式とstd :: functionを使用して、オブザーバーパターンを簡素化します。 2)モバイルセマンティクスと完全な転送を通じてパフォーマンスを最適化します。 3)インテリジェントなポインターは、タイプの安全性とリソース管理を保証します。

cマルチスレッドと同時プログラミングのコア概念には、スレッドの作成と管理、同期と相互排除、条件付き変数、スレッドプーリング、非同期プログラミング、一般的なエラーとデバッグ技術、パフォーマンスの最適化とベストプラクティスが含まれます。 1)STD ::スレッドクラスを使用してスレッドを作成します。この例は、スレッドが完了する方法を作成し、待つ方法を示しています。 2)共有リソースを保護し、データ競争を回避するために、STD :: MutexおよびSTD :: LOCK_GUARDを使用するための同期と相互除外。 3)条件変数は、std :: condition_variableを介したスレッド間の通信と同期を実現します。 4)スレッドプールの例は、スレッドプールクラスを使用してタスクを並行して処理して効率を向上させる方法を示しています。 5)非同期プログラミングはSTD :: ASを使用します

Cのメモリ管理、ポインター、テンプレートはコア機能です。 1。メモリ管理は、新規および削除を通じてメモリを手動で割り当ててリリースし、ヒープとスタックの違いに注意を払います。 2。ポインターにより、メモリアドレスを直接操作し、注意して使用します。スマートポインターは管理を簡素化できます。 3.テンプレートは、一般的なプログラミングを実装し、コードの再利用性と柔軟性を向上させ、タイプの派生と専門化を理解する必要があります。

Cは、ハードウェアに近い制御機能とオブジェクト指向プログラミングの強力な機能を提供するため、システムプログラミングとハードウェアの相互作用に適しています。 1)cポインター、メモリ管理、ビット操作などの低レベルの機能、効率的なシステムレベル操作を実現できます。 2)ハードウェアの相互作用はデバイスドライバーを介して実装され、Cはこれらのドライバーを書き込み、ハードウェアデバイスとの通信を処理できます。

Cは、ハードウェア制御と効率的なパフォーマンスに近いため、高性能のゲームおよびシミュレーションシステムの構築に適しています。 1)メモリ管理:手動制御により、断片化が減少し、パフォーマンスが向上します。 2)コンパイル時間の最適化:インライン関数とループ拡張は、ランニング速度を改善します。 3)低レベルの操作:ハードウェアへの直接アクセス、グラフィックスおよび物理コンピューティングの最適化。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

メモ帳++7.3.1
使いやすく無料のコードエディター

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
