> 백엔드 개발 > C++ > 본문

다음을 중국어로 번역하세요: 주어진 인덱스 왼쪽에 있는 1과 0의 수에 답하는 C++ 쿼리

王林
풀어 주다: 2023-08-29 20:29:05
앞으로
593명이 탐색했습니다.

将以下内容翻译为中文:C++ 查询以回答给定索引左侧的1和0的数量

주어진 배열에 대한 쿼리에 답하기 위한 질문에 대해 토론하세요. 예를 들어, 각 쿼리 인덱스에 대해 인덱스 왼쪽에 있는 1과 0의 수를 찾아야 합니다.

Input: arr[ ] = { 0, 1, 1, 1, 0, 0, 0, 1, 0, 0}, queries[ ] = { 2, 4, 1, 0, 5 }
Output:
query 1: zeros = 1,ones = 1
query 2: zeros = 1,ones = 3
query 3: zeros = 1,ones = 0
query 4: zeros = 0,ones = 0
query 5: zeros = 2,ones = 3

Input: arr[ ] = { 0, 0, 1, 1, 1, 0, 1, 0, 0, 1 }, queries[ ] = { 3, 2, 6 }
Output:
query 1: zeros = 2,ones = 1
query 2: zeros = 2,ones = 0
query 3: zeros = 3,ones = 3
로그인 후 복사

해결책을 찾는 방법

순진한 방법

이 문제를 해결하는 간단한 방법은 쿼리의 인덱스까지 배열을 반복하고 각 요소가 0인지 확인한 다음 0 카운터를 1만큼 증가시키는 것입니다. 제로 카운터 1.

Example

#include <bits/stdc++.h>
using namespace std;
int main(){
    int nums[] = {1, 0, 0, 1, 1, 0, 0, 1, 0, 0};
    int queries[] =  { 2, 4, 1, 0, 5 };
    int qsize = sizeof(queries) / sizeof(queries[0]);
    int zeros=0,ones=0;
    // loop for running each query.
    for(int i = 0;i<qsize;i++){
        //counting zeros and ones
        for(int j = 0;j<queries[i];j++){
            if(nums[j]==0)
            zeros++;
            else
            ones++;
        }
        cout << "\nquery " << i+1 << ": zeros = " << zeros << ",ones = " << ones;
        zeros=0;
        ones=0;
    }
    return 0;
}
로그인 후 복사

Output

query 1: zeros = 1,ones = 1
query 2: zeros = 2,ones = 2
query 3: zeros = 0,ones = 1
query 4: zeros = 0,ones = 0
query 5: zeros = 2,ones = 3
로그인 후 복사

효율적인 방법

이전 방법에서는 매번 0번째 인덱스부터 시작하여 새 쿼리에 대해 1과 0을 계산했습니다.

또 다른 방법은 0과 1을 먼저 계산하는 것입니다. 각 인덱스의 왼쪽에 나타나 배열에 저장하고 쿼리에 작성된 인덱스를 기반으로 답변을 반환합니다.

Example

#include <bits/stdc++.h>
using namespace std;
int main(){
    int nums[] = {1, 0, 0, 1, 1, 0, 0, 1, 0, 0};
    int queries[] =  { 2, 4, 1, 0, 5 };
    int n = sizeof(nums) / sizeof(nums[0]);
    int arr[n][2];
    int zeros = 0, ones = 0;
    // traverse through the nums array.
    for (int i = 0; i < n; i++) {
        // store the number of zeros and ones in arr.
        arr[i][0] = zeros;
        arr[i][1] = ones;
        // increment variable according to condition
        if (nums[i]==0)
            zeros++;
        else
            ones++;
    }
    int qsize = sizeof(queries) / sizeof(queries[0]);
        for (int i = 0; i < qsize; i++)
        cout << "\nquery " << i+1 << ": zeros = " << arr[queries[i]][0] << ",ones ="    << arr[queries[i]][1];
    return 0;
}
로그인 후 복사

Output

query 1: zeros = 1,ones =1
query 2: zeros = 2,ones =2
query 3: zeros = 0,ones =1
query 4: zeros = 0,ones =0
query 5: zeros = 2,ones =3
로그인 후 복사

결론

이 튜토리얼에서는 주어진 배열의 각 쿼리에 대해 인덱스 왼쪽에 1과 0의 수를 반환하는 방법에 대해 논의했습니다. 우리는 이 문제를 해결하는 간단하고 효과적인 방법에 대해 논의했습니다. 또한 이 문제를 해결하기 위해 C, Java, Python 등과 같은 프로그래밍 언어를 사용하여 구현할 수 있는 C++ 프로그램에 대해서도 논의했습니다. 이 튜토리얼이 도움이 되었기를 바랍니다.

위 내용은 다음을 중국어로 번역하세요: 주어진 인덱스 왼쪽에 있는 1과 0의 수에 답하는 C++ 쿼리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿