假设我们有一个二进制数,它表示一个数字n。我们需要找到一个二进制数,它比n大但是最小,并且它也有相同数量的0和1。所以如果这个数是1011(十进制为11),那么输出将是1101(十进制为13)。可以使用下一个排列计算来解决这个问题。让我们看看获取这个想法的算法。
算法
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 jExample
的中文翻译为:示例
#include using namespace std;string nextBinary(string bin) { int len = bin.size(); int i; for (int i=len-2; i>=1; i--) { if (bin[i] == '0' && bin[i+1] == '1') { 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输出
Binary value of next greater number = 1101登录后复制
以上就是C程序中具有相同数量的1和0的下一个更大数字的二进制表示?的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2586981.html