C++ 프로그래밍, m개의 홀수를 갖는 하위 배열의 수 찾기
C++를 사용해 본 적이 있다면 하위 배열이 무엇인지, 얼마나 유용한지 알아야 합니다. 우리 모두는 C++에서 여러 수학 문제를 쉽게 해결할 수 있다는 것을 알고 있습니다. 따라서 이 글에서는 C++에서 이러한 하위 배열을 사용하여 M개의 홀수에 대한 완전한 정보를 찾는 방법을 설명합니다.
이 문제에서는 주어진 배열로 구성된 여러 하위 배열과 정수 m을 찾아야 합니다. 여기서 각 하위 배열은 정확히 m개의 홀수를 포함합니다. 다음은 이 접근 방식의 간단한 예입니다.
Input : array = { 6,3,5,8,9 }, m = 2 Output : 5 Explanation : Subarrays with exactly 2 odd numbers are { 3,5 }, { 6,3,5 }, { 3,5,8 }, { 5,8,9 }, { 6,3,5,8 }, { 3,5,8,9 } Input : array = { 1,6,3,2,5,4 }, m = 2 Output : 6 Explanation : Subarrays with exactly 2 odd numbers are { 1,6,3 }, { 3,2,5 }, { 1,6,3,2 }, { 6,3,2,5 }, { 3,2,5,4 }, { 6,3,2,5,4 }
첫 번째 접근 방식
이 접근 방식에서는 가능한 모든 하위 배열이 지정된 배열에서 생성되고 각 하위 배열에 정확히 m개의 홀수가 있는지 확인됩니다. 이는 O(n2)의 시간 복잡도를 갖는 간단한 생성 및 조회 방법입니다.
Example
#include <bits/stdc++.h> using namespace std; int main (){ int a[] = { 1, 6, 3, 2, 5, 4 }; int n = 6, m = 2, count = 0; // n is size of array, m numbers to be find in subarrays, // count is number of subarray with m odd numbers for (int i = 0; i < n; i++){ // outer loop to process each element. int odd = 0; for (int j = i; j < n; j++) {// inner loop to find subarray with m number if (a[j] % 2) odd++; if (odd == m) // if odd numbers become equals to m. count++; } } cout << "Number of subarrays with n numbers are: " << count; return 0; }
Output
Number of subarrays with n numbers are: 6
위의 코드 설명
이 코드에서는 중첩 루프를 사용하여 m개의 홀수 하위 배열을 찾고, 외부 루프는 "i"를 증가시키는 데 사용되며, 이는 각 배열을 처리하는 데 사용됩니다. 배열의 요소입니다.
내부 루프는 하위 배열을 찾고 홀수 카운터가 m에 도달할 때까지 요소를 처리하고, 발견된 각 하위 배열에 대한 결과 카운터 카운트를 증가시키고 마지막으로 카운트에 저장된 결과를 인쇄하는 데 사용됩니다.
두 번째 방법
또 다른 방법은 다음과 같습니다. "i"개의 홀수 접두사를 저장하는 배열을 만들고, 각 요소를 처리하고, 홀수가 발견될 때마다 홀수의 수를 증가시킵니다.
홀수의 개수가 m보다 크거나 같으면 접두사 배열의 (홀수 - m) 위치에 있는 숫자를 추가하세요.
홀수가 m보다 크거나 같게 되면 인덱스와 "odd - m" 숫자가 count 변수에 추가될 때까지 형성된 하위 배열의 수를 계산합니다. 각 요소가 처리된 후 결과는 count 변수에 저장됩니다.
Example
#include <bits/stdc++.h> using namespace std; int main (){ int array[ ] = { 1, 6, 3, 2, 5, 4 }; int n = 6, m = 2, count = 0, odd = 0, i; int prefix_array[n + 1] = { 0 }; // outer loop to process every element of array for (i = 0; i < n; i++){ prefix_array[odd] = prefix_array[odd] + 1; // implementing value at odd index in prefix_array[ ] // if array element is odd then increment odd variable if (array[i] % 2 == 0) odd++; // if Number of odd element becomes equal or greater than m // then find the number of possible subarrays that can be formed till the index. if (odd >= m) count += prefix_array[odd - m]; } cout << "Number of subarrays with n numbers are: " << count; return 0; }
Output
Number of subarrays with n numbers are: 6
위 코드 설명
시작 값을 사용하여 배열 및 변수 초기화 -
int array[ 6 ] = { 1, 6, 3, 2, 5, 4 }; int n = 6, m = 2, count = 0, odd = 0, i; int prefix_array[n + 1] = { 0 };
여기서 변수 n은 배열의 크기로, 변수 m은 홀수 개수로 초기화합니다. 을 찾고 있습니다. 가능한 하위 배열의 개수를 유지하기 위해 개수를 0으로 초기화하고, 홀수를 0으로 초기화하고, n + 1 0 크기의 prefix_array로 변수 n을 초기화합니다.
루프 이해
for (i = 0; i < n; i++){ prefix_array[odd] = prefix_array[odd] + 1; if (array[i] % 2 == 0) odd++; if (odd >= m) count += prefix_array[odd - m]; }
이 루프에서 우리는 prefix_array에 있습니다. [ ]는 홀수 인덱스에 값을 구현한 다음 홀수가 발견되면 홀수 변수를 증가시킵니다. 홀수 변수가 m보다 크거나 같을 때 인덱스까지 하위 배열의 수를 형성할 수 있음을 알 수 있습니다.
마지막으로 count 변수에 저장된 m개의 홀수 하위 배열 번호를 인쇄하고 출력을 얻습니다.
결론
이 기사에서는 두 가지 방법으로 m개의 홀수 하위 배열 수를 찾는 방법을 살펴보았습니다.
각 하위 배열을 생성하고 그 안에 m개의 홀수가 있는지 확인하고 각 하위 배열을 증가시킵니다. arrayfound 배열의 개수입니다. 이 코드의 시간 복잡도는 O(n2)입니다.
효율적인 방법은 배열의 각 요소를 반복하고 접두사 배열을 만든 다음 접두사 배열의 도움을 사용하는 것입니다. 이 코드의 시간 복잡도는 O(n)입니다.
이 기사가 문제와 해결책을 이해하는 데 도움이 되기를 바랍니다.
위 내용은 C++ 프로그래밍, m개의 홀수를 갖는 하위 배열의 수 찾기의 상세 내용입니다. 자세한 내용은 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)

뜨거운 주제











우리 모두는 2, 3, 5, 7, 8 등과 같이 어떤 숫자의 제곱도 아닌 숫자를 알고 있습니다. N개의 정사각형이 아닌 숫자가 있으며 모든 숫자를 아는 것은 불가능합니다. 그래서 이 글에서는 제곱이 없는 숫자나 제곱이 아닌 숫자에 대한 모든 것과 C++에서 N번째 제곱이 아닌 숫자를 찾는 방법을 설명할 것입니다. N번째 비제곱수 어떤 숫자가 정수의 제곱인 경우, 그 숫자를 완전제곱수라고 합니다. 완전제곱수의 몇 가지 예는 다음과 같습니다. -1issquareof14issquareof29issquareof316issquareof425issquareof5 숫자가 정수의 제곱이 아닌 경우 해당 숫자를 제곱이 아닌 숫자라고 합니다. 예를 들어, 처음 15개의 정사각형이 아닌 숫자는 -2,3,5,6입니다.

원은 닫힌 그림입니다. 원의 모든 점은 원 내부의 점에서 등거리에 있습니다. 중심점을 원의 중심이라고 합니다. 한 점에서 원의 중심까지의 거리를 반지름이라고 합니다. 면적은 닫힌 그림의 크기 범위를 정량적으로 표현한 것입니다. 원의 면적은 원의 치수 내에 둘러싸인 면적입니다. 원의 면적을 계산하는 공식, Area=π*r*r 면적을 계산하기 위해 원의 반경을 입력으로 주고 공식을 사용하여 면적을 계산합니다. 알고리즘 STEP1: Takeradiusasinputfromtheuserusingstdinput.STEP2 : 원의 면적을 계산합니다. 면적=(

이 기사에서는 주어진 배열을 k 요소만큼 오른쪽으로 회전하는 반전 알고리즘에 대해 알아봅니다(예: −Input:arr[]={4,6,2,6,43,7,3,7}). k= 4 출력:{43,7,3,7,4,6,2,6}설명: 배열의 각 요소를 4개 요소별로 오른쪽으로 회전하면 {43,7,3,7,4,6,2,6}이 됩니다.입력:arr[]= {8 ,5,8,2,1,4,9,3},k=3출력:{4,9,3,8,5,8,2,1} 해결책 찾기

C++의 배열 구문에서 여러 개의 고유한 쌍을 생성하려면 적절한 지식이 필요합니다. 고유 쌍의 수를 찾는 동안 주어진 배열의 모든 고유 쌍을 계산합니다. 즉, 각 쌍이 고유해야 하는 모든 가능한 쌍이 형성될 수 있습니다. 예를 들어 -Input:array[]={5,5,9}Output:4Explanation:Thenumberoffalluniquepairsare(5,5),(5,9),(9,5)and(9,9).Input:array[] = {5,4,3,2,2} 출력: 해결 방법을 찾는 16가지 방법 이 문제를 해결하는 방법에는 두 가지가 있습니다.

이번 글에서는 C++를 이용하여 최대값과 최소값이 같은 부분배열의 개수를 찾는 문제를 해결해보겠습니다. 다음은 문제의 예입니다. −Input:array={2,3,6,6,2,4,4,4}Output:12Explanation:{2},{3},{6},{6}, {2 },{4},{4},{4},{6,6},{4,4},{4,4}및{4,4,4}는 동일한 최대 및 최소 요소로 구성할 수 있는 하위 배열입니다.입력:배열={3, 3, 1,5,

이 기사에서는 집합에서 반사 관계를 찾는 방법을 설명합니다. 이 문제에서는 숫자 n과 n개의 자연수 집합이 주어지며 반사 관계의 수를 결정해야 합니다. 재귀 관계 - 집합 A의 모든 'a'에 대해 (a, a)가 관계 R에 속하면 관계 R은 집합 A에 대한 재귀 관계라고 합니다. 예를 들어 -Input:x=1Output:1Explanation:set={1},reflexiverelationsonA*A:{{1}}Input:x=2Output:4Explanation:set={1,2},reflexiverelationsonA*

이 문제에서는 연결 리스트의 헤드에 대한 포인터와 정수 k가 제공됩니다. 크기가 k인 그룹에서는 연결된 목록을 뒤집어야 합니다. 예를 들어 -Input:1<->2<->3<->4<->5(이중 링크 목록),k=3Output:3<->2<->1<->5<->4 솔루션 찾기 방법 이 문제에서는 이 문제를 해결하기 위한 재귀 알고리즘을 공식화합니다. 이 방법에서는 재귀를 사용하고 재귀를 사용하여 문제를 해결합니다. 예#include<iostream&

이 기사에서는 처음 3개 항에 대해 A.P.를 사용하고 마지막 3개 항에 대해 G.P.를 사용하여 쿼터니언을 찾는 가능한 모든 방법을 설명합니다. 먼저, 산술수열(A.P.)과 기하수열(G.P.)의 기본 정의를 설명하겠습니다. Arithmetic Progression(A.P.) - 공차(d)가 동일하거나 일정한 수열입니다. 즉, 연속된 두 수의 차이가 일정하다는 의미입니다. 예: 1,3,5,7,9|d=2 기하학적 진행(G.P.) - 이는 공통 비율(r)이 동일한 일련의 숫자입니다. 즉, 이전 숫자에 고정된 숫자를 곱할 수 있음을 의미합니다. 숫자. 예: 3, 6, 12, 24, ....|r=2 이 문제에서는 N개의 정수로 구성된 arr[] 배열에 몇 개가 있는지 확인해야 합니다.
