長度為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中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

熱門話題

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

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

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

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

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

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

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