이진수가 주어지는 문제에 대해 토론해 보세요.
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.
Brute force는 비트 단위로 최대 결과 수를 제공합니다. 제거 , 다양한 결과를 비교하고 최대 결과를 얻으십시오.
그러나 이는 효율적인 접근 방식을 사용하여 수행할 수 있습니다. 즉, 최소한의 중복 비트를 제거하면 가능합니다.
효율적인 방법은 결과에 최소한의 영향을 미칩니다.
먼저 오른쪽부터 시작해서 조금씩 진행해 보세요.
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
을 보여줍니다.
결과 번호를 저장하기 위해 문자 배열 res를 초기화합니다.
원래 숫자보다 하나 적은 요소를 저장해야 하므로 루프는 n-1로 실행됩니다.
루프는 n-1까지 실행됩니다. p>
이 튜토리얼에서는 한 자리를 제거한 후 최대값을 찾는 방법에 대해 논의했습니다. 우리는 이 문제를 해결하기 위한 두 가지 방법을 논의했습니다.
이를 위해 C++ 코드도 작성했으며 C, Java, Python 등과 같은 다른 언어로도 이 코드를 작성할 수 있습니다. 이 튜토리얼이 도움이 되었기를 바랍니다.
위 내용은 C++에서는 이진수의 한 비트를 제거하여 최대값을 얻습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!