주어진 문자열에 길이가 2 이상인 반복 하위 시퀀스가 있는지 확인하는 C++ 프로그램
문자열이 주어지면 문자열에서 반복되는 길이가 2 이상인 부분 수열을 찾으세요. 하위 시퀀스 요소 번호의 인덱스는 동일한 순서일 수 없습니다.
으아악이 접근 방식이 다양한 상황에서 어떻게 작동하는지 이해하기 위해 아래 몇 가지 예를 살펴보겠습니다. -
예 1 - str = "PNDPNSP"
Explanation − 여기서는 문자열에 반복되는 하위 시퀀스 "PN"이 있으므로 대답은 참입니다.
예 2 - str = "PPND"
Explanation - 여기서는 문자열에 최소 2개의 길이가 반복되는 하위 시퀀스가 없기 때문에 답이 틀렸습니다.
예 3 − str = "PPNP"
설명 - 여기서는 "PP" 인덱스 0과 1, "PP" 인덱스 1과 3이 존재하고, 사용된 "PP"는 하위 시퀀스에서 순차적으로 다른 인덱스를 가지기 때문에 정답입니다. (0부터 시작하는 인덱스)
무차별 접근 방식
의 중국어 번역은 다음과 같습니다.무차별 접근 방식
이 방법은 길이 2(최소 길이)의 가능한 모든 하위 시퀀스를 생성하고 발견된 하위 시퀀스로 이 하위 시퀀스를 이미 본 적이 있는지 찾습니다. 하위 시퀀스가 이미 존재하면 true를 반환하고 프로그램을 종료합니다. 그렇지 않으면 반복을 완료한 후 아무것도 찾지 못하면 false를 반환합니다.
최악의 경우에는 이 하위 시퀀스가 존재하지 않을 수 있으며 결국 가능한 모든 결과가 생성됩니다.
두 길이의 부분 수열을 저장합니다. 따라서 O(1) 삽입 및 검색을 달성하기 위해 계산된 하위 시퀀스를 해시한다고 가정하면 이는 O(n^2)가 됩니다. 전체 부분 수열도 O(n^2)이므로 저장 공간도 마찬가지입니다.수정된 가장 긴 공통 부분 수열(LCS)
LCS 알고리즘은 두 문자열에서 가장 긴 공통 부분 수열을 찾습니다. 2차원 행렬의 반복 방법을 사용하는 표준 동적 프로그래밍 방법입니다. 시간 복잡도는 O(n^2)입니다. 수정된 메소드에서는 주어진 문자열 자체만 검색합니다. 그럼에도 불구하고, 현재 위치의 인덱스가 동일한지 확인해 보겠습니다.
예
아래 C++ 코드를 확인하여 길이가 2 이상인 반복되는 하위 시퀀스를 찾는 데 도움이 되는 수정된 가장 긴 공통 하위 시퀀스 알고리즘을 구현하세요. -
으아악출력
으아악물론 시간 및 공간 복잡도는 O(n^2)이지만 첫 번째 방법을 보면 O(1)의 해시를 생성하는 것이 더 우아하고 쉽습니다.
향상된 솔루션
이 방법에서는 이전 방법을 기반으로 몇 가지 관찰을 시도해 보겠습니다.
관찰 1 − 캐릭터가 두 번 이상 나타나면 대답은 항상 참입니다. 왜 그런지 볼까요?
Example - 문자열 str = "AVHJFBABVNHFA"에서 위치 0, 6, 12에 "AAA"가 있습니다. 그래서 인덱스 0과 6에 "AA"가 하위 시퀀스로 있고, 인덱스 6과 12에 "AA"가 하위 시퀀스로 있을 수 있습니다. 다른 것으로.
관찰 2 - 문자가 한 번만 반복되면 결과에 기여할 수 없습니다. 최대 하나의 하위 시퀀스에서만 사용할 수 있기 때문입니다. 작동하지 않습니다 왜냐하면 최소한 두 개의 하위 시퀀스가 필요하기 때문입니다. 따라서 모든 문자를 제거하거나 무시할 수 있습니다. 동시에 일어났습니다.
관찰 3 − 문자열이 회문이고 처음 두 관측이 적용되는 경우 답은 다음과 같습니다. 문자열 길이가 홀수인 경우를 제외하면 항상 false입니다. 왜 그런지 볼까요?
예 - 문자열 str = "PNDDNP"
설명 - 이제 문자 순서가 맞지 않아 절대 찾을 수 없습니다. 하위 시퀀스의 순서가 동일하므로 이는 불가능합니다.
예
위의 세 가지 관찰을 모두 바탕으로 문자열에 한 번 나타나는 모든 문자를 제거한 다음 특정 문자가 두 번 이상 나타나는지 또는 문자열이 회문이 아닌지 확인하면 답이 정확하다는 결론을 내립니다. C++로 구현된 개선된 솔루션을 살펴보겠습니다 -
으아악출력
으아악결론
우리는 관찰과 해시를 사용하는 것이 이 문제를 해결하는 가장 좋은 방법이라는 결론을 내렸습니다. 시간 복잡도는 O(n)입니다. 공간 복잡도도 O(n) 정도이므로 새 문자열과 상수 26자 해시가 생성됩니다.
위 내용은 주어진 문자열에 길이가 2 이상인 반복 하위 시퀀스가 있는지 확인하는 C++ 프로그램의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

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

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

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

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

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

뜨거운 주제











Apple의 나의 찾기 앱을 사용하면 iPhone이나 기타 기기의 위치를 찾아 분실하거나 잊어버리는 일을 방지할 수 있습니다. 나의 찾기는 장치를 추적하는 데 유용한 도구이지만 개인 정보 보호 문제가 우려되거나 배터리 소모를 원하지 않는 경우 또는 기타 이유로 비활성화할 수 있습니다. 다행히도 iPhone에서 나의 찾기를 끄는 방법에는 여러 가지가 있으며, 이 기사에서는 이에 대해 모두 설명하겠습니다. iPhone에서 나의 찾기를 끄는 방법 [4가지 방법] 네 가지 방법으로 iPhone에서 나의 찾기를 끌 수 있습니다. 방법 1을 사용하여 찾기를 끈 경우 비활성화하려는 장치에서 이 작업을 수행할 수 있습니다. 방법 2, 3, 4를 진행하려면 Find Finder를 끄려는 iPhone의 전원을 끄거나

iPhone에서 나의 찾기를 끄면 어떻게 되나요? 나의 iPhone 찾기는 분실했거나 도난당한 기기를 찾는 데 도움이 됩니다. 나의 iPhone 찾기를 활성화하면 지도에서 기기의 위치를 추적하고, 소리를 재생하고, 기기를 찾는 데 도움을 줄 수 있습니다. 나의 찾기에는 다른 사람이 귀하의 iPhone을 사용하는 것을 방지하는 활성화 잠금 기능도 포함되어 있습니다. 나의 iPhone 찾기를 끄면 이러한 모든 기능이 손실되어 분실된 Apple 기기를 복구하기 어려울 수 있습니다. 나의 iPhone 찾기는 매우 유용하지만 휴대폰을 판매, 기부, 교환하거나 배터리 교체 또는 기타 서비스를 위해 보낼 때는 비활성화해야 합니다. 이렇게 하면 누구도 귀하에 관한 정보에 접근할 수 없습니다.

하드 드라이브 일련 번호와 MAC 주소는 컴퓨터 하드웨어의 중요한 식별자이며 컴퓨터 시스템을 관리하고 유지하는 데 매우 유용합니다. 이 문서에서는 하드 디스크 일련 번호와 MAC 주소를 찾는 방법을 소개합니다. 1. 하드 드라이브 일련 번호를 찾으십시오. 하드 드라이브 일련 번호는 하드 드라이브 제조업체가 하드 드라이브를 식별하고 추적하는 데 사용하는 고유 식별자입니다. 운영 체제에 따라 하드 드라이브 일련 번호를 찾는 방법이 약간 다릅니다. Windows: 명령 프롬프트를 열고(시작 메뉴에서 "cmd" 검색) 다음 명령을 입력하고 Enter를 누릅니다. wmicdisk

C#에서 Array.IndexOf 함수를 사용하여 배열에 있는 요소의 인덱스를 찾습니다. C# 프로그램에서 배열에 있는 요소의 인덱스를 찾아야 하는 경우 Array.IndexOf 함수를 사용할 수 있습니다. Array.IndexOf 함수는 지정된 배열 범위 내에서 지정된 요소를 찾고 해당 요소가 처음 나타나는 인덱스를 반환합니다. 요소를 찾을 수 없으면 -1이 반환됩니다. 다음은 Array.IndexOf 함수를 사용하여 배열에서 요소를 찾는 방법을 보여 주는 샘플 코드입니다.

PHP의 glob() 함수는 파일이나 디렉터리를 찾는 데 사용되며 강력한 파일 작업 함수입니다. 지정된 패턴 일치를 기반으로 파일 또는 디렉터리의 경로를 반환할 수 있습니다. glob() 함수의 구문은 다음과 같습니다. glob(pattern, flags) 여기서 패턴은 일치할 패턴 문자열을 나타내며 *.txt(.txt로 끝나는 일치 파일)와 같은 와일드카드 표현식일 수 있습니다. 특정 파일 경로. 플래그는 함수를 제어하는 데 사용되는 선택적 매개변수입니다.

맵은 각 요소가 두 값, 즉 키 값과 맵 값의 쌍인 C++의 특수한 유형의 컨테이너입니다. 키 값은 각 항목을 인덱싱하는 데 사용되며 매핑된 값은 키와 연결된 값입니다. 매핑된 값이 고유한지 여부에 관계없이 키는 항상 고유합니다. C++에서 맵 요소를 인쇄하려면 반복자를 사용해야 합니다. 항목 집합의 요소는 반복자 개체로 표시됩니다. 반복자는 주로 배열 및 기타 유형의 컨테이너(예: 벡터)와 함께 사용되며 특정 범위 내의 특정 요소를 식별하는 데 사용할 수 있는 특정 작업 집합을 가지고 있습니다. 반복자는 범위나 컨테이너에 있는 다양한 요소를 참조하기 위해 증가하거나 감소할 수 있습니다. 반복자는 범위에 있는 특정 요소의 메모리 위치를 가리킵니다. 반복자를 사용하여 C++에서 지도 인쇄하기 먼저, 정의하는 방법을 살펴보겠습니다.

쌍곡선 함수는 원 대신 쌍곡선을 사용하여 정의되며 일반 삼각 함수와 동일합니다. 제공된 각도(라디안)에서 쌍곡사인 함수의 비율 매개변수를 반환합니다. 그러나 반대로 하십시오. 즉, 반대로 하십시오. 쌍곡선 사인으로부터 각도를 계산하려면 쌍곡선 역사인 연산과 같은 역쌍곡선 삼각법 연산이 필요합니다. 이 과정에서는 라디안 단위의 쌍곡선 사인 값을 사용하여 각도를 계산하기 위해 C++에서 쌍곡선 역사인(asinh) 함수를 사용하는 방법을 보여줍니다. 쌍곡선 아크사인 연산은 다음 공식 -$$\mathrm{sinh^{-1}x\:=\:In(x\:+\:\sqrt{x^2\:+\:1})}을 따릅니다. 여기서\:In\:은\:자연 로그\:(log_e\:k)

컴퓨터 하드 드라이브의 일련번호를 확인하는 방법 컴퓨터 기술의 발달로 컴퓨터 하드 드라이브는 우리 삶에 없어서는 안 될 부분이 되었습니다. 중요한 파일을 저장하거나 운영 체제 및 소프트웨어를 설치하는 등의 작업을 완료하려면 하드 디스크에 의존해야 합니다. 하드 드라이브의 일련 번호와 같은 컴퓨터 하드 드라이브에 대한 몇 가지 기본 정보를 이해하면 컴퓨터 시스템을 더 잘 관리하고 유지하는 데 도움이 될 수 있습니다. 그렇다면 컴퓨터 하드디스크의 일련번호를 확인하는 방법은 무엇일까요? 이 기사에서는 몇 가지 일반적인 방법을 소개합니다. 방법 1: Windows 시스템과 함께 제공되는 명령줄 도구 사용 Windows 시스템
