이진 문자열에서 모든 0을 제거하는 데 필요한 인접하지 않은 쌍 뒤집기의 최소 횟수
이진 문자열에서 인접한 비트 쌍을 뒤집으면 문자열에서 단일 0을 쉽게 제거할 수 있습니다. 그러나 이진 문자열에서 모든 0을 제거해야 할 경우 인접하지 않은 비트 쌍을 뒤집어야 할 수도 있습니다. 이 기사에서는 이진 문자열에서 모든 0을 제거하는 데 필요한 인접하지 않은 쌍 뒤집기의 최소 횟수를 결정하는 방법에 대해 설명합니다.
알고리즘
이 문제를 해결하기 위해 간단한 탐욕 알고리즘을 사용하겠습니다. 아이디어는 항상 서로 가장 멀리 떨어져 있고 그 사이에 적어도 하나의 0이 있는 비트 쌍을 선택하는 것입니다. 그런 다음 이 두 비트를 뒤집어 문자열에서 0을 효과적으로 제거할 수 있습니다. 모든 0이 제거될 때까지 이 과정을 반복합니다.
이제 이 알고리즘을 C++로 구현해 보겠습니다.
예
으아아아출력
으아아아코드 설명
위 코드는 이진 문자열을 입력으로 사용하고 문자열에서 모든 0을 제거하는 데 필요한 인접하지 않은 쌍 뒤집기의 최소 수를 계산합니다. 이제 코드를 자세히 살펴보겠습니다.
먼저 바이너리 문자열을 입력으로 받아 문자열 변수 "s"에 저장합니다. 또한 문자열의 크기를 정수 변수 "n"에 저장합니다.
으아아아다음으로 문자열에 0의 개수를 저장하기 위해 변수 "cnt"를 초기화합니다. 그런 다음 for 루프를 사용하여 문자열을 반복합니다. 0이 발생할 때마다 0의 개수를 늘리고 다음 두 비트도 0인지 확인합니다. 그렇다면 인덱스를 2만큼 늘려 비트 쌍을 뒤집습니다. 그렇지 않으면 인덱스를 1씩 늘려 인접한 비트 쌍만 뒤집습니다.
으아아아마지막으로 문자열에서 모든 0을 제거하는 데 필요한 인접하지 않은 쌍 뒤집기 횟수를 출력합니다.
으아아아테스트 케이스 예시
이진 문자열 "100101000"을 고려해 보겠습니다. 이 문자열에서 모든 0을 제거하는 데 필요한 인접하지 않은 쌍 뒤집기의 최소 횟수는 위의 알고리즘을 사용하여 계산할 수 있습니다.
먼저 위치 2에서 0을 만납니다. (1,3) 쌍을 뒤집어 문자열 "110101000"을 얻습니다. 그런 다음 위치 5에서 다음 0을 만납니다. (1,7) 쌍을 뒤집어 문자열 "111101000"을 얻습니다. 그런 다음 위치 8에서 다음 0을 만납니다. (1,9) 쌍을 뒤집어 문자열 "111111000"을 얻습니다. 이제 문자열에서 모든 0이 제거되었습니다.
문자열에서 0을 모두 제거하는 데 필요한 인접하지 않은 쌍 뒤집기 횟수는 3입니다. 입력 문자열 "100101000"에 대해 위의 C++ 코드를 실행하여 이를 확인할 수 있습니다.
결론
이 문서에서는 이진 문자열에서 모든 0을 제거하는 데 필요한 인접하지 않은 쌍 뒤집기의 최소 수를 결정하는 방법에 대해 논의했습니다. 우리는 이 문제를 해결하기 위해 간단한 탐욕 알고리즘을 사용하고 이를 C++ 코드로 구현합니다. 또한 알고리즘 작동 방식을 설명하기 위해 예제 테스트 사례도 제공합니다.
위 내용은 이진 문자열에서 모든 0을 제거하는 데 필요한 인접하지 않은 쌍 뒤집기의 최소 횟수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











플레이어는 Eye of Deep Space에서 게임을 플레이할 때 화면을 뒤집을 수 있습니다. 많은 사용자는 Eye of Deep Space에서 화면을 뒤집는 방법을 모릅니다. 플레이어는 제어 센터에서 화면 회전을 지원하는 옵션을 켠 다음 다시 돌아가야 합니다. 게임. 딥 스페이스 아이 화면 뒤집는 방법 1. 휴대폰 화면을 열고 손가락으로 화면 하단에서 위로 밀어 올립니다. 2. 그런 다음 제어 센터를 열 수 있습니다. 제어 센터의 오른쪽 상단에는 화면 회전을 끄는 스위치가 있습니다. 3. 클릭하면 화면 회전이 활성화됩니다. 이때 제어 센터에 회전을 제어하는 아이콘이 강조 표시됩니다. 4. 화면 회전을 지원하는 애플리케이션을 열면 휴대폰 방향이 바뀌면서 화면이 회전합니다.

순수한 CSS 서문을 통해 이미지 뒤집기 효과를 얻는 방법에 대한 방법 및 기술: 웹 개발에서는 사용자 경험을 높이기 위해 웹 페이지에 애니메이션 효과를 추가해야 하는 경우가 많습니다. 사진의 뒤집기 효과는 일반적인 효과 중 하나입니다. 순수 CSS를 통해 이미지 뒤집기를 구현하는 것이 간단하고 편리할 뿐만 아니라, JavaScript 등 다른 언어 사용으로 인한 추가 오버헤드도 방지할 수 있습니다. 이 글에서는 순수 CSS를 통해 이미지 반전 효과를 얻는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. CSS3 transfo 사용

이진 연산은 이진수를 기반으로 하는 연산 방법으로 덧셈, 뺄셈, 곱셈, 나눗셈이 포함됩니다. 기본 연산 외에도 이진 연산에는 논리 연산, 변위 연산 및 기타 연산이 포함됩니다. 논리 연산에는 AND, OR, NOT 등의 연산이 포함되며 변위 연산에는 왼쪽 시프트 연산과 오른쪽 시프트 연산이 포함됩니다. 이러한 연산에는 해당 규칙과 피연산자 요구 사항이 있습니다.

이진수는 1과 0으로 표현됩니다. 16비트 16진수 체계는 2진수 표현을 16진수로 변환하기 위해 {0,1,2,3…..9,A(10),B(11),…F(15)} 비트를 나타냅니다. 문자열 ID는 최하위 쪽부터 시작하여 니블이라고 하는 4비트 청크로 그룹화됩니다. 각 블록은 해당하는 16진수로 대체됩니다. 16진수와 2진수 표현을 명확하게 이해하기 위해 예를 살펴보겠습니다. 001111100101101100011101 3 E 5 B&nb

EDVAC에는 두 가지 주요 개선 사항이 있습니다. 하나는 바이너리를 사용하는 것이고, 다른 하나는 저장된 프로그램을 완성하는 것입니다. 이는 하나의 프로그램 명령에서 다음 명령으로 자동으로 진행할 수 있으며 해당 작업은 명령을 통해 자동으로 완료될 수 있습니다. "명령어"란 기계의 메모리 장치에 코드 형태로 입력되는 데이터와 프로그램을 포함합니다. 즉, 데이터를 저장하는 메모리 장치와 동일한 메모리 장치를 사용하여 작업을 수행하는 명령을 저장하는 새로운 개념입니다. - 저장된 프로그램이라고 합니다.

HTML, CSS 및 jQuery: 아름다운 카드 뒤집기 효과 구축 웹 디자인에서 특수 효과를 적용하면 페이지의 상호 작용성과 시각적 효과를 높일 수 있습니다. 카드 뒤집기 효과는 사용자에게 더욱 생생하고 흥미로운 탐색 경험을 선사할 수 있는 일반적인 특수 효과입니다. 이 기사에서는 HTML, CSS 및 jQuery를 사용하여 아름다운 카드 뒤집기 효과를 구축하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 먼저 HTML의 기본 구조를 준비해야 합니다. 두 개의 div 요소를 사용하여 카드 앞면을 나타냅니다.

Golang에서 바이너리 파일을 읽는 방법은 무엇입니까? 바이너리 파일은 컴퓨터가 인식하고 처리할 수 있는 데이터가 포함된 바이너리 형식으로 저장된 파일입니다. Golang에서는 몇 가지 방법을 사용하여 바이너리 파일을 읽고 이를 원하는 데이터 형식으로 구문 분석할 수 있습니다. 다음은 Golang에서 바이너리 파일을 읽는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 먼저, 파일 객체를 반환하는 os 패키지의 Open 함수를 사용하여 바이너리 파일을 열어야 합니다. 그럼 우리는 만들 수 있습니다

컴퓨터가 이진 시스템을 사용하는 주요 이유: 1. 컴퓨터는 논리 회로로 구성됩니다. 논리 회로는 일반적으로 스위치가 켜지고 꺼지는 두 가지 상태만 가지며 이 두 상태는 "1"과 "0"으로 표시될 수 있습니다. . 바이너리 시스템에서는 0과 1의 두 숫자만 사용하므로 전송 및 처리 시 오류가 덜 발생하므로 컴퓨터의 높은 신뢰성이 보장됩니다.
