討論一個給定二進制數的問題。我們必須從中刪除一點,以便剩餘的數字應該是所有其他選項中的最大值,例如
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] == '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++中,將一個二進制數的一位移除以獲得最大值的詳細內容。更多資訊請關注PHP中文網其他相關文章!