您好,欢迎访问一九零五行业门户网

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

讨论一个给定二进制数的问题。我们必须从中删除一点,以便剩余的数字应该是所有其他选项中的最大值,例如
input : n = 1011output: 111explanation: we need to remove one bit so removing 0 bit will give a maximum number than removing any 1’s bit. 111 > 101, 011.input: 111output: 11explanation: since all the bits are 1 so we can remove any bit.
求解的方法暴力破解法暴力破解会给出最大的结果数,即通过一位一位去除,比较不同的结果,并获得最大结果。
但是它可以使用一种高效方法,即,如果我们删除最少的冗余位。
高效方法高效的方法对结果的影响最小。
首先,从右边开始遍历各个位。
搜索 0 并将其在第一个计数器上删除。
如果未找到 0,则删除任何位。
示例高效方法的 c++ 代码
#include <bits/stdc++.h>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 < n - 1; i++) { // if 0 is found then skip it. if (str[i] == '0' && flag == false) { flag = true; continue; } else res[j++] = str[i]; } // printing the resulting string. cout << "maximum number: " << res; return 0;}
输出maximum number: 111
上述代码说明使用标志变量,以便只消除一个 0。
初始化字符数组 res 来存储结果数。
循环将运行到 n-1,因为我们需要存储比原始数少一个元素。
循环将运行到 n-1。 p>
结论在本教程中,我们讨论了删除一位后找到最大数字。我们讨论了解决此问题的两种方法。
我们还为此编写了 c++ 代码,我们可以用任何其他语言(如 c、java、python 等)编写这些代码。我们希望本教程对您有所帮助。
以上就是在c++中,将一个二进制数的一位移除以获得最大值的详细内容。
其它类似信息

推荐信息