ホームページ >バックエンド開発 >PHPチュートリアル >連続する 1 を含まないバイナリ文字列の数を数える PHP プログラム

連続する 1 を含まないバイナリ文字列の数を数える PHP プログラム

WBOY
WBOY転載
2023-09-03 20:37:051391ブラウズ

連続する 1 を含まないバイナリ文字列の数を数える PHP プログラム

#連続 1 のないバイナリ文字列の数は何ですか?

連続しないバイナリ文字列を数える概念を説明する例を考えてみましょう。

###例###

長さが 3 で、連続する 1 を含まないバイナリ文字列の数を数えたいとします。バイナリ文字列は、0 と 1 だけで構成される文字列です。

長さ 3 の可能なバイナリ文字列は、000、001、010、011、100、101、110、111 です。

ただし、カウントする必要があるのは、連続する 1 を持たないバイナリ文字列だけです。したがって、文字列 011、101、および 111 をカウントから除外する必要があります。

残りのバイナリ文字列を分析してみましょう。

    000: 連続する 1 がないため、これは有効な文字列です。
  • 001: 連続する 1 がないため、これは有効な文字列です。
  • 010: 連続する 1 がないため、これは有効な文字列です。
  • 100: 連続する 1 がないため、これは有効な文字列です。
  • 110: 1 が連続しているため、これは無効な文字列です。
  • 上記の分析からわかるように、長さ 3 の有効なバイナリ文字列が 4 つあり、連続する 1 はありません。

PHP プログラムは、連続する 1 のないバイナリ文字列の数をカウントします。

方法 1 - 動的プログラミングを使用する

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

コードの説明

この PHP コードは、動的プログラミングを使用して、連続する 1 を含まない長さ

$

n のバイナリ文字列の数をカウントする countBinaryStrings という関数を定義します。基本ケース

$

dp[0] = 1 および

$

dp[1] = 2 を使用して配列 $dp を初期化し、カウントが次のものであることを示します。それぞれ長さ 0 と 1 つの文字列。次に、ループを使用して、長さ $i - 1 と $ のカウントを合計することで、長さ 2 の残りのカウントを $n に埋めます。 >i - 2. 最後に、長さ $n のカウントを返し、それを出力します。この特定の例では、コードは、連続する 1 を持たない長さ 5 のバイナリ文字列の数をカウントし、結果を表示します。 方法 2 リーリー ###出力### リーリー コードの説明 この PHP コードは、2 つの連続する 1 を含まない、長さ

$

n の個別のバイナリ文字列の数をカウントします。カウントを保存するために、2 つの配列

$

a と

$

b を定義します。基本ケースは

$

a[0] = $b[0] = 1 に設定されます。次に、ループを使用して長さ 1 から $n-1 を計算します。長さ $i のカウントは、配列 $a の長さのカウント $i-1 を長さ a のカウントに加算することによって取得されます。 >$i-1 は配列 $b から取得されます。また、配列 $b の長さ $i のカウントは配列 ## から取得されます。 #$ 長さ $i-1 のカウントは a によって取得されます。最後に、コードは長さ $n-1 のカウントと長さを配列 に返します。 $a. ##$n-1 のカウントの合計は配列 $b から取得され、連続する 1 を含まないバイナリ文字列の総数を表します。この特定の例では、コードは長さ 5 のカウントを計算し、結果を表示します。 ###結論は### 要約すると、最初の方法は動的プログラミングを利用し、基本ケースで配列を初期化し、より長い長さのカウントを繰り返し計算します。最初の 2 つの長さのカウントを加算することで結果を効率的に計算します。 2 番目のアプローチは、より単純なアプローチで、2 つの配列を使用してカウントを保存し、以前の長さのカウントに基づいて繰り返し更新します。 2 つの配列を個別に合計することなく、合計数を直接計算します。どちらの方法でも、連続するバイナリ文字列を除いてバイナリ文字列を正確にカウントできます。どちらの方法を選択するかは、特定の要件とパフォーマンスの考慮事項によって異なります。

以上が連続する 1 を含まないバイナリ文字列の数を数える PHP プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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