C程序中具有相同数量的1和0的下一个更大数字的二进制表示?

c程序中具有相同数量的1和0的下一个更大数字的二进制表示?

假设我们有一个二进制数,它表示一个数字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 j 

Example

的中文翻译为:

示例

#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

(0)
上一篇 2025年3月6日 15:27:19
下一篇 2025年3月6日 07:27:26

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论