首頁  >  文章  >  後端開發  >  在C++中,將一個二進制數的一位移除以獲得最大值

在C++中,將一個二進制數的一位移除以獲得最大值

PHPz
PHPz轉載
2023-09-17 15:53:081133瀏覽

在C++中,將一個二進制數的一位移除以獲得最大值

討論一個給定二進制數的問題。我們必須從中刪除一點,以便剩餘的數字應該是所有其他選項中的最大值,例如

Input : N = 1011
Output: 111
Explanation: 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: 111
Output: 11
Explanation: 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] == &#39;0&#39; && 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++中,將一個二進制數的一位移除以獲得最大值的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除