目錄
演算法
genAllBinEqualSumHalf(n, left, right, diff)
範例
輸出
首頁 後端開發 C++ 長度為n的所有可能的二進制數,兩半部的和相等?

長度為n的所有可能的二進制數,兩半部的和相等?

Sep 03, 2023 pm 01:21 PM
二進制數 長度 和相等

長度為n的所有可能的二進制數,兩半部的和相等?

這裡我們將看到所有可能的n位元二進位數(n由使用者給出),其中每一半的和相同。例如,如果數字是 10001,這裡 10 和 01 是相同的,因為它們的總和相同,並且它們位於不同的一半。這裡我們將產生該類型的所有數字。

演算法

genAllBinEqualSumHalf(n, left, right, diff)

left和right最初為空,diff保存差異左右之間

Begin
   if n is 0, then
      if diff is 0, then
         print left + right
      end if
      return
   end if
   if n is 1, then
      if diff is 0, then
         print left + 0 + right
         print left + 1 + right
      end if
      return
   end if
   if 2* |diff| <= n, then
      if left is not blank, then
         genAllBinEqualSumHalf(n-2, left + 0, right + 0, diff)
         genAllBinEqualSumHalf(n-2, left + 0, right + 1, diff-1)
      end if
      genAllBinEqualSumHalf(n-2, left + 1, right + 0, diff + 1)
      genAllBinEqualSumHalf(n-2, left + 1, right + 1, diff)
   end if
End
登入後複製

範例

#include <bits/stdc++.h>
using namespace std;
//left and right strings will be filled up, di will hold the difference between left and right
void genAllBinEqualSumHalf(int n, string left="", string right="", int di=0) {
   if (n == 0) { //when the n is 0
      if (di == 0) //if diff is 0, then concatenate left and right
         cout << left + right << " ";
      return;
   }
   if (n == 1) {//if 1 bit number is their
      if (di == 0) { //when difference is 0, generate two numbers one with 0 after left, another with 1 after left, then add right
         cout << left + "0" + right << " ";
         cout << left + "1" + right << " ";
      }
      return;
   }
   if ((2 * abs(di) <= n)) {
      if (left != ""){ //numbers will not start with 0
         genAllBinEqualSumHalf(n-2, left+"0", right+"0", di);
         //add 0 after left and right
         genAllBinEqualSumHalf(n-2, left+"0", right+"1", di-1);
         //add 0 after left, and 1 after right, so difference is 1 less
      }
      genAllBinEqualSumHalf(n-2, left+"1", right+"0", di+1); //add 1 after left, and 0 after right, so difference is 1 greater
      genAllBinEqualSumHalf(n-2, left+"1", right+"1", di); //add 1 after left and right
   }
}
main() {
   int n = 5;
   genAllBinEqualSumHalf(n);
}
登入後複製

輸出

100001
100010
101011
110011
100100
101101
101110
110101
110110
111111
登入後複製

以上是長度為n的所有可能的二進制數,兩半部的和相等?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

ip位址是由多少位二進位數組成 ip位址是由多少位二進位數組成 Mar 01, 2023 pm 04:35 PM

ip位址是由32或128位元二進位數組成。 IP位址是IP協定提供的一種統一的位址格式,IP位址分兩種:1、ipv4位址,由32位元二進位數組成,用點分十進位表示,每八位元劃分,也就是四個0~255的十進位數;2、ipv6位址,由128位元二進位數組成,以點分十六進位表示,每八位元劃分,也就是十六個0x00~0xff的十六進位數。

PHP數組長度限制是多少? PHP數組長度限制是多少? Mar 13, 2024 pm 06:30 PM

PHP中數組的長度並沒有固定的限制,它可以根據系統的記憶體大小來動態調整。在PHP中,陣列是一種非常靈活的資料結構,可以儲存任意數量的元素,每個元素可以是任意類型的值,甚至可以是另一個陣列。 PHP數組的長度限制主要取決於系統的記憶體大小和PHP配置的記憶體限制。一般來說,如果系統的記憶體夠大,且PHP的記憶體限制夠高,陣列的長度可以很大。但是,如果系統記憶體不足或

使用C語言找到給定二進制數的2的補碼 使用C語言找到給定二進制數的2的補碼 Sep 05, 2023 pm 03:21 PM

考慮下面給出的範例-範例輸入如下:輸入二進制數:10010001輸出如下:1對10010001的補碼是011011102對10010001的補碼是01101111演算法參考一種演算法來找出給定二進制數的2'c數。第1步-開始。步驟2-閱讀運行時的二進制數。步驟3-將二進制數複製到strdp。步驟4-len:=strlen(str)第5步-對於i=0到len-1執行   步驟5.1-如果str[i]=='1'則    步驟5.1.1-str[i]==' 0'   步驟5.2-否則    步驟5.2.1

PHP數組長度是否受限? PHP數組長度是否受限? Mar 13, 2024 pm 06:36 PM

PHP數組長度是否受限?需要具體程式碼範例在PHP中,陣列長度並不受固定的限制,可以根據系統記憶體的實際限制來動態調整陣列大小。 PHP中的數組是一種動態數組,因此可以根據需要動態增長或縮小。在PHP中,陣列是一種有序映射的資料結構,可以用數組下標或關聯數組的鍵值來存取數組元素。下面我們來看具體的程式碼範例來示範PHP數組長度是否受限制。首先,我們可以透過以下代

二進制數的1的補碼和2的補碼是什麼? 二進制數的1的補碼和2的補碼是什麼? Sep 11, 2023 pm 11:33 PM

二進制數以基數2表示。它只使用“0”和“1”兩位數字。二進制數中的每個數字都是一個位元。範例二進制數-01000101111的補碼二進位的補碼number是將二進位數的數字反轉,即1轉為0,0轉為1得到的。範例1’sComplementof101100=0100112的補碼二進位數的補碼是二進位數的補碼加1,即1的補碼+1。範例2’scomplementof101101is010011.範例程式碼找一個和兩個補碼的程式碼-#include<iostr

ipv6位址是由多少位元二進位數組成的 ipv6位址是由多少位元二進位數組成的 Dec 15, 2020 pm 02:02 PM

ipv6位址是由128位元二進位數組成的。 IPv6位址是以十六進位表示的二進制數,具有128位元位址長度。一個IPv6的IP位址由8個位址節組成,每節包含16個位址位,總長度是16x8=128位。

給定一個數組,求兩個字串長度總和的最大值,這兩個字串沒有相同的字符 給定一個數組,求兩個字串長度總和的最大值,這兩個字串沒有相同的字符 Aug 29, 2023 pm 06:45 PM

本文的目的是實現一個程序,以最大化給定數組中沒有公共字元的一對字串的長度總和。根據定義,字串是字元的集合。問題陳述實作一個程序,以最大化給定數組中沒有公共字元的一對字串的長度總和。範例1LetusconsidertheInputarray:a[]=[“efgh”,“hat”,“fto”,“car”,“wxyz”,“fan”]Outputobtained:8說明字串「abcd」和「wxyz」中沒有共同字元。結果,兩個字串相加的長度為4+4,等於8,是所有可行對中最長的長度。範例2Letu

解析len函數的用途和重要性的多個視角 解析len函數的用途和重要性的多個視角 Dec 28, 2023 am 08:38 AM

len函數的作用與意義從不同角度解讀len函數是Python程式語言中常用的函數之一。它主要用於傳回一個容器物件(例如字串、列表、元組等)的長度或元素個數。這個簡單的函數在編寫程式時起著非常重要的作用,有著多個角度可以解讀其作用與意義。本文將從效能、可讀性和容器類型的角度對len函數進行解讀,並提供具體的程式碼範例。一、效能角度在處理大規模資料時,程式的效能

See all articles