>  기사  >  백엔드 개발  >  C++에서는 이진수의 한 비트를 제거하여 최대값을 얻습니다.

C++에서는 이진수의 한 비트를 제거하여 최대값을 얻습니다.

PHPz
PHPz앞으로
2023-09-17 15:53:081128검색

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.

Solution method

Brute force method

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] == &#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으로 문의하시기 바랍니다. 삭제