Rumah > pembangunan bahagian belakang > C++ > Dalam program C, terjemahkan urutan Baum Sweet

Dalam program C, terjemahkan urutan Baum Sweet

王林
Lepaskan: 2023-08-26 22:17:02
ke hadapan
1268 orang telah melayarinya

在C程序中,将Baum Sweet序列进行翻译

Di sini kita akan melihat urutan Baum Sweet. Urutannya ialah jujukan binari. Jika nombor n mempunyai nombor ganjil 0s berturut-turut, maka bit ke-n akan menjadi 0, jika tidak bit ke-n akan menjadi 1.

Kami mempunyai nombor asli n. Tugas kita ialah mencari sebutan ke-n bagi jujukan Baum Sweet. Jadi kita perlu menyemak sama ada ia mempunyai blok berturut-turut sifar panjang ganjil.

Jika nombornya 4, sebutan ini akan menjadi 1 kerana 4 ialah 100. Jadi ia mempunyai dua (genap) sifar.

Algoritma

BaumSweetSeqTerm (G, s) -

begin
   define bit sequence seq of size n
   baum := 1
   len := number of bits in binary of n
   for i in range 0 to len, do
      j := i + 1
      count := 1
      if seq[i] = 0, then
         for j in range i + 1 to len, do
            if seq[j] = 0, then
               increase count
            else
               break
            end if
         done
         if count is odd, then
            baum := 0
         end if
      end if
   done
   return baum
end
Salin selepas log masuk

Contoh

#include <bits/stdc++.h>
using namespace std;
int BaumSweetSeqTerm(int n) {
   bitset<32> sequence(n); //store bit-wise representation
   int len = 32 - __builtin_clz(n);
   //builtin_clz() function gives number of zeroes present before the first 1
   int baum = 1; // nth term of baum sequence
   for (int i = 0; i < len;) {
      int j = i + 1;
      if (sequence[i] == 0) {
         int count = 1;
         for (j = i + 1; j < len; j++) {
            if (sequence[j] == 0) // counts consecutive zeroes
               count++;
            else
               break;
         }
         if (count % 2 == 1) //check odd or even
            baum = 0;
      }
      i = j;
   }
   return baum;
}
int main() {
   int n = 4;
   cout << BaumSweetSeqTerm(n);
}
Salin selepas log masuk

Output

1
Salin selepas log masuk

Atas ialah kandungan terperinci Dalam program C, terjemahkan urutan Baum Sweet. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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