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

n個のバイナリ文字列を追加しますか?


このプログラムでは、指定された2進数を追加する必要があります。 n個の2進数があり、それらすべてを加算して1つの2進数を出力する必要があります。

このために、バイナリ加算ロジックを使用し、1からNまでのすべての項を1つずつ加算して結果を取得します。

Input: "1011", "10", "1001"
Output: 10110

説明

より簡単な方法は、バイナリ文字列を同等の10進数に変換してから、それらを追加して再度バイナリに変換することです。ここでは手動で加算します.1つのヘルパー関数を使用して2つのバイナリ文字列を加算します。この関数は、n個の異なるバイナリ文字列に対してn〜1回使用されます。

#include<iostream>
using namespace std;
string add(string b1, string b2) {
   string res = "";
   int s = 0;
   int i = b1.length() - 1, j = b2.length() - 1;
   while (i >= 0 || j >= 0 || s == 1) {
      if(i >= 0) {
         s += b1[i] - '0';
      } else {
         s += 0;
      }
      if(j >= 0) {
         s += b2[j] - '0';
      } else {
         s += 0;
      }
      res = char(s % 2 + '0') + res;
      s /= 2;
      i--; j--;
   }
   return res;
}
string addbinary(string a[], int n) { string res = "";
   for (int i = 0; i < n; i++) {
      res = add(res, a[i]);
   }
   return res;
}
int main() {
   string arr[] = { "1011", "10", "1001" };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout << addbinary(arr, n) << endl;
}

  1. C#での二分探索

    バイナリ検索はソートされた配列で機能します。値は配列の中央の要素と比較されます。同等性が見つからない場合は、値が存在しない半分の部分が削除されます。同様に、残りの半分の部分が検索されます。 これが配列のmid要素です。 62を見つける必要があるとしましょう。そうすると、左側の部分が削除され、右側の部分が検索されます- これらは二分探索の複雑さです- 最悪の場合のパフォーマンス O(log n) ベストケースのパフォーマンス O(1) 平均パフォーマンス O(log n) 最悪の場合のスペースの複雑さ O(1) 例 二分

  2. 連続する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]