Rumah > pembangunan bahagian belakang > C++ > Program C/C++: Kira bilangan rentetan binari tanpa 1 berturut-turut?

Program C/C++: Kira bilangan rentetan binari tanpa 1 berturut-turut?

WBOY
Lepaskan: 2023-08-29 18:01:03
ke hadapan
1388 orang telah melayarinya

Program C/C++: Kira bilangan rentetan binari tanpa 1 berturut-turut?

Nombor binari ialah nombor yang mengandungi dua digit sahaja, 0 dan 1 sahaja. Setiap nombor binari ialah aliran bit binari, yang kami anggap sebagai rentetan binari. Untuk rentetan ini, kita perlu mencari bilangan rentetan binari N panjang yang tidak mengandungi 1 berturut-turut.

Sebagai contoh, untuk N=5, rentetan binari yang memenuhi syarat yang diberikan ialah 00000 00001 00010 00100 00101 01000 01001 01010 10000 10000 101010 10001 101010 .

Salah satu cara ialah menjana semua rentetan N-digit dan hanya mencetak rentetan yang memenuhi syarat yang diberikan. Walau bagaimanapun, pendekatan ini tidak cekap apabila melibatkan operasi berskala besar.

Cara lain ialah menggunakan rekursi. Pada setiap langkah rekursi, kami tambahkan 0 dan 1 pada nombor yang terbentuk separa dan mengulangi dengan kurang satu nombor. Kuncinya ialah hanya jika digit terakhir nombor yang dibentuk separa ialah 0, kita tambahkan 1 dan ulang. Dengan cara ini, tidak akan ada 1 berturut-turut dalam rentetan output.

Input: n = 5
Output: Number of 5-digit binary strings without any consecutive 1's are 13
Salin selepas log masuk

Contoh

#include <iostream>
#include <string>
using namespace std;
int countStrings(int n, int last_digit) {
   if (n == 0)
      return 0;
   if (n == 1) {
      if (last_digit)
         return 1;
      else
         return 2;
   }
   if (last_digit == 0)
      return countStrings(n - 1, 0) + countStrings(n - 1, 1);
   else
      return countStrings(n - 1, 0);
}
int main() {
   int n = 5;
   cout << "Number of " << n << "-digit binary strings without any "
   "consecutive 1&#39;s are " << countStrings(n, 0);
   return 0;
}
Salin selepas log masuk

Atas ialah kandungan terperinci Program C/C++: Kira bilangan rentetan binari tanpa 1 berturut-turut?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan