Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Terjemahkan yang berikut ke dalam bahasa Cina: Pertanyaan C++ untuk menjawab nombor 1 dan 0 di sebelah kiri indeks yang diberikan

Terjemahkan yang berikut ke dalam bahasa Cina: Pertanyaan C++ untuk menjawab nombor 1 dan 0 di sebelah kiri indeks yang diberikan

王林
王林ke hadapan
2023-08-29 20:29:05553semak imbas

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

Bincangkan soalan untuk menjawab pertanyaan pada tatasusunan yang diberikan. Sebagai contoh, untuk setiap indeks pertanyaan, kita perlu mencari nombor 1 dan 0 di sebelah kiri indeks.

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

Cara untuk mencari penyelesaian

Cara naif

Cara mudah untuk menyelesaikan masalah ini ialah dengan melelar melalui tatasusunan ke indeks pertanyaan dan semak setiap elemen jika ia adalah 0 kemudian tambahkan pembilang sifar sebanyak 1 lagi naikkan pembilang sifar 1.

Contoh

#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

Kaedah yang cekap

Dalam kaedah sebelumnya, setiap kali kita bermula dari indeks ke-0 untuk mengira 1 dan 0 untuk pertanyaan baru.

Cara lain ialah mengira 0 dan 1 dahulu. muncul di sebelah kiri setiap indeks, menyimpannya dalam tatasusunan, dan mengembalikan jawapan berdasarkan indeks yang ditulis dalam pertanyaan.

Contoh

#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

Kesimpulan

Dalam tutorial ini, kami membincangkan mengembalikan nombor 1s dan 0s ke kiri indeks untuk setiap pertanyaan dalam tatasusunan yang diberikan. Kami membincangkan cara mudah dan berkesan untuk menyelesaikan masalah ini. Kami juga membincangkan program C++ untuk menyelesaikan masalah ini, yang boleh kami laksanakan menggunakan bahasa pengaturcaraan seperti C, Java, Python, dll. Kami harap anda mendapati tutorial ini membantu.

Atas ialah kandungan terperinci Terjemahkan yang berikut ke dalam bahasa Cina: Pertanyaan C++ untuk menjawab nombor 1 dan 0 di sebelah kiri indeks yang diberikan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam