在C++中,将一个二进制数的一位移除以获得最大值

在C++中,将一个二进制数的一位移除以获得最大值

讨论一个给定二进制数的问题。我们必须从中删除一点,以便剩余的数字应该是所有其他选项中的最大值,例如

  1. Input : N = 1011Output: 111Explanation: We need to remove one bit so removing 0 bit will give a maximum number than removing any 1s bit. 111 > 101, 011.Input: 111Output: 11Explanation: Since all the bits are 1 so we can remove any bit.

登录后复制

求解的方法

暴力破解法

暴力破解会给出最大的结果数,即通过一位一位去除,比较不同的结果,并获得最大结果。

但是它可以使用一种高效方法,即,如果我们删除最少的冗余位。

高效方法

高效的方法对结果的影响最小。

立即学习“C++免费学习笔记(深入)”;

首先,从右边开始遍历各个位。

搜索 0 并将其在第一个计数器上删除。

如果未找到 0,则删除任何位。

示例

高效方法的 C++ 代码

  1. #include using namespace std;int main(){    string str = "1011";    bool flag = false;    int n = str.length();    // Initialising new array for    char res[n - 1];    int j = 0;    // traversing through the binary number from right.    for (int i = 0; j

    输出

    Maximum number: 111
  2. 登录后复制

  3. 上述代码说明

  4. 使用标志变量,以便只消除一个 0

  5. 初始化字符数组 res 来存储结果数。

  6. 循环将运行到 n-1,因为我们需要存储比原始数少一个元素。

  7. 循环将运行到 n-1 p>

  8. 结论

  9. 在本教程中,我们讨论了删除一位后找到最大数字。我们讨论了解决此问题的两种方法。

  10. 我们还为此编写了 C++ 代码,我们可以用任何其他语言(如 CJavaPython 等)编写这些代码。我们希望本教程对您有所帮助。

  11. 以上就是在C++中,将一个二进制数的一位移除以获得最大值的详细内容,更多请关注【创想鸟】其它相关文章!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

点点赞赏,手留余香

给TA打赏
共0人
还没有人赞赏,快来当第一个赞赏的人吧!
    编程技术

    C程序生成电费账单

    2025-3-6 13:56:00

    编程技术

    按字典顺序最大的字符串,其字符之和等于N

    2025-3-6 13:56:06

    0 条回复 A文章作者 M管理员
    欢迎您,新朋友,感谢参与互动!
      暂无讨论,说说你的看法吧
    个人中心
    购物车
    优惠劵
    今日签到
    私信列表
    搜索