长度为n的所有可能的二进制数,两半部分的和相等?
这里我们将看到所有可能的n位二进制数(n由用户给出),其中每一半的和相同。例如,如果数字是 10001,这里 10 和 01 是相同的,因为它们的总和相同,并且它们位于不同的一半。在这里,我们将生成该类型的所有数字。
算法
genAllBinEqualSumHalf(n, left, right, diff)
左和右最初为空,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); }
输出
rree以上是长度为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函数进行解读,并提供具体的代码示例。一、性能角度在处理大规模数据时,程序的性能
