プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

連続した1なしでバイナリ文字列をカウントします


この問題では、連続する1がない2進数を見つける必要があります。 3ビットの2進数文字列には、連続する1を持つ3つの2進数011、110、111があり、連続する1がない5つの数値があります。したがって、このアルゴリズムを3ビットの数値に適用すると、答えは5になります。

a [i]がビット数がIで連続する1を含まない2進数のセットであり、b[i]がビット数がIで連続する1を含む2進数のセットである場合、次のような繰り返し関係があります:

a[i] := a[i - 1] + b[i - 1]
b[i] := a[i - 1]

入力と出力

Input:
This algorithm takes number of bits for a binary number. Let the input is 4.
Output:
It returns the number of binary strings which have no consecutive 1’s.
Here the result is: 8. (There are 8 binary strings which has no consecutive 1’s)

アルゴリズム

countBinNums(n)

入力: nはビット数です。
出力- 連続する1がない数が存在する数を数えます。

Begin
   define lists with strings ending with 0 and ending with 1
   endWithZero[0] := 1
   endWithOne[0] := 1

   for i := 1 to n-1, do
      endWithZero[i] := endWithZero[i-1] + endWithOne[i-1]
      endWithOne[i] := endWithZero[i-1]
   done
   return endWithZero[n-1] + endWithOne[n-1]
End

#include <iostream>
using namespace std;

int countBinNums(int n) {
   int endWithZero[n], endWithOne[n];
   endWithZero[0] = endWithOne[0] = 1;

   for (int i = 1; i < n; i++) {
      endWithZero[i] = endWithZero[i-1] + endWithOne[i-1];
      endWithOne[i] = endWithZero[i-1];
   }
   return endWithZero[n-1] + endWithOne[n-1];
}

int main() {
   int n;
   cout << "Enter number of bits: "; cin >> n;
   cout << "Number of binary numbers without consecitive 1's: "<<countBinNums(n) << endl;
   return 0;
}

出力

Enter number of bits: 4
Number of binary numbers without consecitive 1's: 8

  1. 連続する1’のないバイナリ文字列の数をカウントするPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −正の整数Nが与えられているので、文字列に連続する1が存在しないように、長さNで使用可能なすべての可能な個別のバイナリ文字列をカウントする必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # count the number of strings def countStrings(n):    a=[0 for i in range(n)]    b=[0 for i in range(n)]    a[0] = b[0]

  2. 指定された文字列のバイナリ表現で最大の連続する1の長さを見つけるPythonプログラム。

    数を指定して、バイナリ表現で最も長い連続する1の長さを見つけます。 例 Input: n = 15 Output: 4 The binary representation of 14 is 1111. アルゴリズム Step 1: input the number. Step 2: use one counter variable c=0. Step 3: Count the number of iterations to reach i = 0. Step 4: This operation reduces length of every sequence of 1s by one.