目次
この問題を解決するために、単純な貪欲アルゴリズムを使用します。考え方は、常に互いに最も遠く離れており、その間に少なくとも 1 つの 0 が含まれるビットのペアを選択することです。次に、これら 2 つのビットを反転して、文字列から 0 を効果的に削除します。すべての 0 が削除されるまで、このプロセスを繰り返します。
上記のコードは、バイナリ文字列を入力として受け取り、文字列からすべての 0 を削除するために必要な、隣接しないペアの反転の最小数を計算します。次に、コードを詳しく見てみましょう。
まず、バイナリ文字列を入力として受け取り、それを文字列変数 "s" に保存します。また、文字列のサイズを整変数「n」に保存します。
次に、文字列内の 0 の数を格納するために変数「cnt」を初期化します。次に、for ループを使用して文字列を反復処理します。 0 が出現するたびに、0 のカウントをインクリメントし、次の 2 ビットも 0 であるかどうかを確認します。その場合は、インデックスを 2 増やしてビットのペアを反転します。それ以外の場合は、インデックスを 1 ずつ増やして、隣接するビット ペアのみを反転します。
文字列からすべての 0 を削除するために必要な非隣接ペアの反転の数は 3 です。これを確認するには、入力文字列「100101000」に対して上記の C コードを実行します。
ホームページ バックエンド開発 C++ バイナリ文字列内のすべてのゼロを削除するために必要な、隣接しないペアの反転の最小数

バイナリ文字列内のすべてのゼロを削除するために必要な、隣接しないペアの反転の最小数

Sep 04, 2023 pm 01:09 PM
バイナリ フリップ 隣接していない

バイナリ文字列内のすべてのゼロを削除するために必要な、隣接しないペアの反転の最小数

バイナリ文字列では、隣接するビットのペアを反転すると、文字列から 1 つの 0 を簡単に削除できます。ただし、バイナリ文字列からすべての 0 を削除する必要がある場合は、隣接しないビット ペアも反転する必要がある場合があります。この記事では、バイナリ文字列からすべての 0 を削除するために必要な、隣接しないペアの反転の最小数を決定する方法について説明します。

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

この問題を解決するために、単純な貪欲アルゴリズムを使用します。考え方は、常に互いに最も遠く離れており、その間に少なくとも 1 つの 0 が含まれるビットのペアを選択することです。次に、これら 2 つのビットを反転して、文字列から 0 を効果的に削除します。すべての 0 が削除されるまで、このプロセスを繰り返します。

次に、このアルゴリズムを C で実装してみましょう。

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

コードの説明

上記のコードは、バイナリ文字列を入力として受け取り、文字列からすべての 0 を削除するために必要な、隣接しないペアの反転の最小数を計算します。次に、コードを詳しく見てみましょう。

まず、バイナリ文字列を入力として受け取り、それを文字列変数 "s" に保存します。また、文字列のサイズを整変数「n」に保存します。

リーリー

次に、文字列内の 0 の数を格納するために変数「cnt」を初期化します。次に、for ループを使用して文字列を反復処理します。 0 が出現するたびに、0 のカウントをインクリメントし、次の 2 ビットも 0 であるかどうかを確認します。その場合は、インデックスを 2 増やしてビットのペアを反転します。それ以外の場合は、インデックスを 1 ずつ増やして、隣接するビット ペアのみを反転します。

リーリー

最後に、文字列からすべての 0 を削除するために必要な、隣接しないペアの反転の数を出力します。

リーリー

テストケースの例

バイナリ文字列「100101000」について考えてみましょう。この文字列からすべての 0 を削除するために必要な、隣接しないペアの反転の最小数は、上記のアルゴリズムを使用して計算できます。

まず、位置 2 で 0 に遭遇します。 (1,3) ペアを反転して、文字列「110101000」を取得します。次に、位置 5 で次の 0 に遭遇します。 (1,7) ペアを反転して、文字列「111101000」を取得します。次に、位置 8 で次の 0 に遭遇します。 (1,9) ペアを反転して、文字列「111111000」を取得します。これで、文字列からすべての 0 が削除されました。

文字列からすべての 0 を削除するために必要な非隣接ペアの反転の数は 3 です。これを確認するには、入力文字列「100101000」に対して上記の C コードを実行します。

###結論は###

この記事では、バイナリ文字列からすべての 0 を削除するために必要な、隣接しないペアの反転の最小数を決定する方法について説明しました。シンプルな貪欲アルゴリズムを使用してこの問題を解決し、C コードで実装します。また、アルゴリズムがどのように機能するかを説明するサンプル テスト ケースも提供します。

以上がバイナリ文字列内のすべてのゼロを削除するために必要な、隣接しないペアの反転の最小数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Eye of Deep Space で画面を反転する方法 Eye of Deep Space で画面を反転する方法 Mar 22, 2024 pm 10:41 PM

プレイヤーは、Eye of Deep Space でゲームをプレイするときに画面を反転できます。多くのユーザーは、Eye of Deep Space で画面を反転する方法を知りません。プレイヤーは、コントロール センターで画面の回転をサポートするオプションをオンにしてから、に戻る必要があります。ゲーム。 Deep Space Eye の画面を反転する方法 1. 携帯電話の画面を開き、指で画面の下から上にスライドさせます。 2. コントロールセンターを開くと、コントロールセンターの右上隅に画面の回転をオフにするスイッチがあります。 3. それをクリックして画面の回転をオンにすると、コントロール センターで回転を制御するアイコンが強調表示されていることがわかります。 4. 画面の回転をサポートするアプリケーションを開くと、携帯電話の向きが変わるとアプリケーションも回転します。

二進数の計算方法 二進数の計算方法 Jan 19, 2024 pm 04:38 PM

2 進数演算は 2 進数に基づいた演算方法であり、その基本演算には加算、減算、乗算、除算が含まれます。 2 進算術には、基本的な演算に加えて、論理演算、変位演算、その他の演算も含まれます。論理演算には AND、OR、NOT などの演算が含まれ、変位演算には左シフト演算と右シフト演算が含まれます。これらの操作には、対応するルールとオペランド要件があります。

純粋な CSS を通じて画像反転効果を実現する方法とテクニック 純粋な CSS を通じて画像反転効果を実現する方法とテクニック Oct 20, 2023 am 10:57 AM

純粋な CSS を通じて画像反転効果を実現する方法とテクニック 序文: Web 開発では、ユーザー エクスペリエンスを向上させるために、Web ページにいくつかのアニメーション効果を追加する必要があることがよくあります。画像の反転効果は、一般的な効果の 1 つです。純粋な CSS を通じて画像の反転を実現するのは簡単で便利であるだけでなく、JavaScript などの他の言語を使用することによって生じる追加のオーバーヘッドも回避できます。この記事では、純粋な CSS を使用して画像の反転効果を実現する方法を紹介し、具体的なコード例を示します。 1. CSS3 変換を使用する

C言語を使用して2進数を16進数に変換するにはどうすればよいですか? C言語を使用して2進数を16進数に変換するにはどうすればよいですか? Sep 01, 2023 pm 06:57 PM

2 進数は 1 と 0 で表されます。 16 ビットの 16 進数体系は、2 進表現から 16 進表現に変換するために、{0,1,2,3…..9,A(10),B(11),…F(15)} となります。文字列 ID は、最下位側から始まるニブルと呼ばれる 4 ビットのチャンクにグループ化されます。各ブロックは、対応する 16 進数に置き換えられます。 16 進数と 2 進数の表現を明確に理解するために例を見てみましょう。 001111100101101100011101 3 E 5 B&N

EDVAC の 2 つの主な改良点は何ですか? EDVAC の 2 つの主な改良点は何ですか? Mar 02, 2023 pm 02:58 PM

EDVAC には 2 つの大きな改良点があります。1 つはバイナリの使用、もう 1 つは保存されたプログラムの完成です。これは、あるプログラム命令から次のプログラム命令に自動的に進み、その操作は命令を通じて自動的に完了できます。 「命令」にはデータやプログラムが含まれており、それらはコードの形で機械の記憶装置に入力されます、つまり、データを格納する同じ記憶装置を使用して、演算を実行するための命令を格納するという新しい概念です。 - 保存されたプログラムと呼ばれます。

HTML、CSS、jQuery: 美しいカード反転効果を構築する HTML、CSS、jQuery: 美しいカード反転効果を構築する Oct 27, 2023 pm 01:43 PM

HTML、CSS、および jQuery: 美しいカード反転効果を構築する Web デザインでは、特殊効果を適用することで、ページの対話性と視覚効果を高めることができます。カードめくり効果は、ユーザーにより鮮やかで興味深いブラウジング体験をもたらす一般的な特殊効果です。この記事では、HTML、CSS、jQuery を使用して美しいカード反転効果を構築する方法を紹介し、具体的なコード例を示します。まず、HTML の基本構造を準備する必要があります。カードの前面を表すために 2 つの div 要素を使用します。

Golang でバイナリ ファイルを読み取るにはどうすればよいですか? Golang でバイナリ ファイルを読み取るにはどうすればよいですか? Mar 21, 2024 am 08:27 AM

Golang でバイナリ ファイルを読み取るにはどうすればよいですか?バイナリ ファイルは、コンピュータが認識して処理できるデータを含む、バイナリ形式で保存されたファイルです。 Golang では、いくつかのメソッドを使用してバイナリ ファイルを読み取り、必要なデータ形式に解析できます。 Golangでバイナリファイルを読み込む方法と具体的なコード例を紹介します。まず、OS パッケージの Open 関数を使用してバイナリ ファイルを開く必要があります。これにより、ファイル オブジェクトが返されます。それから私たちは作ることができます

コンピューター内でバイナリを使用する主な理由は何ですか? コンピューター内でバイナリを使用する主な理由は何ですか? Apr 04, 2019 pm 02:25 PM

コンピュータが 2 進法を使用する主な理由: 1. コンピュータは論理回路で構成されています。論理回路には通常、スイッチのオンとオフの 2 つの状態しかなく、これら 2 つの状態は「1」と「0」で表すことができます。 . 2 進法では 0 と 1 の 2 つの数値のみが使用されるため、送信時や処理時にエラーが発生しにくく、コンピュータの信頼性が高くなります。

See all articles