Rumah > pembangunan bahagian belakang > C++ > Perwakilan binari nombor yang lebih besar seterusnya dengan nombor 1 dan 0 yang sama dalam program C?

Perwakilan binari nombor yang lebih besar seterusnya dengan nombor 1 dan 0 yang sama dalam program C?

PHPz
Lepaskan: 2023-08-26 15:21:06
ke hadapan
1272 orang telah melayarinya

Perwakilan binari nombor yang lebih besar seterusnya dengan nombor 1 dan 0 yang sama dalam program C?

Andaikan kita mempunyai nombor binari yang mewakili nombor n. Kita perlu mencari nombor binari yang lebih besar daripada n tetapi terkecil, dan yang juga mempunyai nombor 0 dan 1 yang sama. Jadi jika nombornya ialah 1011 (11 dalam perpuluhan), maka outputnya ialah 1101 (13 dalam perpuluhan). Masalah ini boleh diselesaikan menggunakan pengiraan pilih atur seterusnya. Mari lihat algoritma untuk mendapatkan idea ini. Terjemahan bahasa Cina bagi

algoritma

nextBin(bin) −

Begin
   len := length of the bin
   for i in range len-2, down to 1, do
      if bin[i] is 0 and bin[i+1] = 1, then
         exchange the bin[i] and bin[i+1]
         break
      end if
   done
   if i = 0, then there is no change, return
   otherwise j:= i + 2, k := len – 1
   while j < k, do
      if bin[j] is 1 and bin[k] is 0, then
         exchange bin[j] and bin[k]
         increase j and k by 1
      else if bin[i] is 0, then
         break
      else
         increase j by 1
      end if
   done
   return bin
End
Salin selepas log masuk

Contoh

ialah:

Contoh

#include <iostream>
using namespace std;
string nextBinary(string bin) {
   int len = bin.size();
   int i;
   for (int i=len-2; i>=1; i--) {
      if (bin[i] == &#39;0&#39; && bin[i+1] == &#39;1&#39;) {
         char ch = bin[i];
         bin[i] = bin[i+1];
         bin[i+1] = ch;
         break;
      }
   }
   if (i == 0)
   "No greater number is present";
   int j = i+2, k = len-1;
   while (j < k) {
      if (bin[j] == &#39;1&#39; && bin[k] == &#39;0&#39;) {
         char ch = bin[j];
         bin[j] = bin[k];
         bin[k] = ch;
         j++;
         k--;
      }
      else if (bin[i] == &#39;0&#39;)
         break;
      else
         j++;
   }
   return bin;
}
int main() {
   string bin = "1011";
   cout << "Binary value of next greater number = " << nextBinary(bin);
}
Salin selepas log masuk

Output

Binary value of next greater number = 1101
Salin selepas log masuk

Atas ialah kandungan terperinci Perwakilan binari nombor yang lebih besar seterusnya dengan nombor 1 dan 0 yang sama dalam program C?. 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