当前位置: 首页 > 编程笔记 >

在C ++中一键查找二进制表示形式的最长1序列

曹华荣
2023-03-14
本文向大家介绍在C ++中一键查找二进制表示形式的最长1序列,包括了在C ++中一键查找二进制表示形式的最长1序列的使用技巧和注意事项,需要的朋友参考一下

假设我们有一个整数n。在其中,我们可以进行一位翻转以生成最长的1s序列。假设数字为13,因此二进制表示形式为1101。如果将1翻转为make 0到1,则它将为1111。这是最长的1s序列

为了解决这个问题,我们将遍历给定数字的位。我们将跟踪当前1的序列长度和前一个1的序列长度。找到零后,再更新以前的长度。因此,如果下一位为1,则应将前一个长度设置为当前长度。如果下一个为0,则将上一个再次设为0。

示例

#include<iostream>
using namespace std;
int singleFlipMaxOnes(unsigned number) {
   if (~number == 0)
      return 8*sizeof(int);
   int curr = 0, prev = 0, max_size = 0;
   while (number!= 0) {
      if ((number & 1) == 1)
         curr++;
      else if ((number & 1) == 0) {
         prev = (number & 2) == 0? 0 : curr;
         curr = 0;
      }
      max_size = max(prev + curr, max_size);
      number >>= 1;
   }
   return max_size+1;
}
int main() {
   cout << "Maximum length of the sequence with 1s: " << singleFlipMaxOnes(13);
}

输出结果

Maximum length of the sequence with 1s: 4
 类似资料:
  • 本文向大家介绍C#程序在给定整数的二进制表示中找到最长连续1的长度,包括了C#程序在给定整数的二进制表示中找到最长连续1的长度的使用技巧和注意事项,需要的朋友参考一下 要获取连续的1,请使用按位左移运算符。这是我们的十进制数字。 循环上述操作,直到I的值为0,然后使用变量获取长度;在这里数。 我们在这里举的例子是150。 150的二进制文件是10010110。因此,我们有两个连续的二进制文件。 示

  • 在过去的一周里,我一直在努力解决这个问题,似乎我最终无法解决它。给定任意64位无符号整数,如果它在任何位位置、任何位设置下包含31(0b11111)的二进制模式,则该数字有效,否则无效。 例如: 0000 0000 0000 0000 0000 0001 1111有效 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000

  • 本文向大家介绍用C ++程序查找二进制搜索树的最小值,包括了用C ++程序查找二进制搜索树的最小值的使用技巧和注意事项,需要的朋友参考一下 它是一个寻找二叉搜索树的最小值的程序。 演算法 示例 输出结果

  • 给定一个范围[a,b](包含两者),我需要在二进制表示中找到最大数量为“1”的最小数字。我目前的方法是找到从a到b的所有数字中设置的位数,并跟踪最大值。然而,这很慢,有更快的方法吗?

  • 我需要帮助确定R中观察组中最长的连续值序列(=1)。 我有城镇月降雨量的数据。我需要确定每年月降雨量高于年平均值的最长时期(rain_above = 1)。如果每年有两个等长的时期,我想确定总降雨量最大的时期。 一些示例数据: 在df,A镇在2000年的第4个月到第8个月之间有一个雨季。这是rain_above=1的唯一时期。 B镇在2001年有一个雨季,在第1个月和第3个月之间。尽管有两个长度相

  • 问题内容: 我有一个字节的二进制字符串表示形式,例如 如何将其转换为真实的二进制值并将其写入二进制文件? 问题答案: 使用该功能具有的读取二进制值作为一个整数。 Python 2使用字符串来处理二进制数据,因此您将使用该函数将整数转换为一字节的字符串。 Python 3个中处理二进制和文本不同,所以你需要使用的类型来代替。它没有直接等效于该函数的函数,但是构造函数可以获取字节值列表。我们放入一个元