


Tulis kod menggunakan C++ untuk mencari bilangan subarray dengan jumlah ganjil
Subarray ialah bahagian bersebelahan daripada tatasusunan. Sebagai contoh, kami menganggap tatasusunan [5, 6, 7, 8], maka terdapat sepuluh sub-tatasusunan bukan kosong, seperti (5), (6), (7), (8), (5, 6). ), (6, 7), (7,8), (5,6,7), (6,7,8) dan (5,6,7,8).
Dalam panduan ini, kami akan menerangkan semua maklumat yang mungkin untuk mencari bilangan subarray dengan jumlah ganjil dalam C++. Untuk mencari bilangan sub-tatasusunan dengan jumlah ganjil kita boleh menggunakan kaedah yang berbeza jadi berikut ialah contoh mudah -
Input : array = {9,8,7,6,5} Output : 9 Explanation : Sum of subarray - {9} = 9 {7} = 7 {5} = 5 {9,8} = 17 {8,7} = 15 {7,6} = 13 {6,5} = 11 {8,7,6} = 21 {9,8,7,6,5} = 35
Kaedah brute force
Dengan kaedah ini kita hanya boleh menyemak bahawa jumlah elemen dalam semua sub-tatasusunan ialah Genap atau ganjil, jika genap kita akan menolak sub-tatasusunan dan mengira sub-tatasusunan yang jumlahnya ganjil, ini bukan cara yang cekap kerana kerumitan kod ini ialah O(n2).
Contoh
#include <bits/stdc++.h> using namespace std; int main(){ int n=5, temp = 0; int a[n-1] = { 9,8,7,6,5 } ; // declaring our array. int cnt = 0; // counter variable. for(int i = 0; i < n; i++){ temp = 0; // refreshing our temp sum. for(int j = i; j < n; j++){ // this loop will make our subarrays starting from i till n-1. temp = temp + a[j]; if( temp % 2 == 1 ) cnt++; } } cout << "Number of subarrays with odd sum : " << cnt << "\n"; return 0; }
Output
Number of subarrays with odd sum : 9
Perihalan kod di atas
Gelung bersarang digunakan dalam kod ini, di mana gelung luar digunakan untuk menambah nilai I, dan I menunjuk kepada setiap nilai dalam tatasusunan dari awal ; gelung dalam digunakan untuk mencari Subarray dengan jumlah ganjil bermula pada kedudukan " i ".
Kaedah yang cekap
Dalam kaedah ini kita memproses setiap elemen bermula dari kedudukan ke-0 dalam tatasusunan. Jika elemen semasa adalah ganjil, tambahkan pembilang ganjil dan tambahkan pembilang genap untuk setiap nombor genap. Jika kita menjumpai nombor ganjil, nilai Genap dan ganjil ditukar, kerana menambah nombor ganjil pada subarray mengubah paritinya, dan akhirnya kiraan ditambahkan pada hasilnya. Kerumitan kod ini ialah O(n) kerana kami sedang memproses setiap elemen.
Contoh
#include <bits/stdc++.h> using namespace std; int main(){ int odd = 0, even = 0, result = 0,n=5,i,temp; int arr[ n-1 ] = { 9,8,7,6,5}; // initialising the array // for loop for processing every element of array for ( i = 0 ; i < n ; i ++ ) { if ( arr[ i ] % 2 == 0 ) { even++; } else { // swapping even odd values temp = even; even = odd; odd = temp + 1; } result += odd; } cout << "Number of subarrays with odd sum : " << result; }
Output
Number of subarrays with odd sum : 9
Penjelasan kod di atas
Dalam kod ini, kami menyemak nombor genap/ganjil setiap elemen dan menambah pembilang genap untuk genap dan pembilang ganjil untuk ganjil. Selain itu, jika nombor ganjil ditemui, kami akan menukar nilai kaunter pariti jika tidak, ia akan menukar pariti subbarray. Kemudian tambahkan nilai pembilang ganjil kepada pembolehubah hasil selepas setiap lelaran.
Kesimpulan
Dalam artikel ini kami menerangkan cara mencari kaedah paksaan nombor daripada Brute untuk subarray dengan jumlah ganjil, jana setiap subarray dengan jumlah ganjil dan tambahkan kiraan. Kerumitan masa kod ini ialah O(n2). Cara yang cekap ialah dengan melelakan setiap elemen tatasusunan dan menambah pembolehubah pembilang ganjil/genap dengan setiap nombor ganjil/genap ditemui, menukar pembilang jika nombor ganjil ditemui kerumitan masa kod ini ialah O(n). Saya harap anda mendapati artikel ini membantu dalam memahami masalah dan penyelesaiannya.
Atas ialah kandungan terperinci Tulis kod menggunakan C++ untuk mencari bilangan subarray dengan jumlah ganjil. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Pada lengkung ingat-kepersisan, titik yang sama diplot dengan paksi yang berbeza. Amaran: Titik merah pertama di sebelah kiri (0% ingat, 100% ketepatan) sepadan dengan 0 peraturan. Titik kedua di sebelah kiri ialah peraturan pertama, dan seterusnya. Skope-rules menggunakan model pokok untuk menjana calon peraturan. Mula-mula bina beberapa pepohon keputusan dan pertimbangkan laluan dari nod akar ke nod dalaman atau nod daun sebagai calon peraturan. Peraturan calon ini kemudiannya ditapis oleh beberapa kriteria yang telah ditetapkan seperti ketepatan dan ingat semula. Hanya mereka yang mempunyai ketepatan dan ingatan di atas ambang mereka dikekalkan. Akhir sekali, penapisan persamaan digunakan untuk memilih peraturan dengan kepelbagaian yang mencukupi. Secara umum, Skope-rules digunakan untuk mengetahui punca setiap perkara

Pengesanan luar pengedaran (OOD) adalah penting untuk pengendalian sistem pintar dunia terbuka yang boleh dipercayai, tetapi kaedah pengesanan berorientasikan objek semasa mengalami "ketidakkonsistenan penilaian" (ketidakkonsistenan penilaian). Kerja sebelumnya OpenOODv1 menyatukan penilaian pengesanan OOD, tetapi masih mempunyai batasan dalam skalabilitas dan kebolehgunaan. Baru-baru ini, pasukan pembangunan sekali lagi mencadangkan OpenOODv1.5 Berbanding dengan versi sebelumnya, penilaian kaedah pengesanan OOD baharu telah dipertingkatkan dengan ketara dalam memastikan ketepatan, penyeragaman dan kemesraan pengguna. Kertas Imej: https://arxiv.org/abs/2306.09301OpenOODCodebase:htt

Di Java, satu cara untuk menghantar parameter semasa runtime adalah dengan menggunakan baris arahan atau terminal. Apabila mendapatkan semula nilai ini untuk parameter baris arahan, kita mungkin perlu mencari bilangan parameter yang disediakan oleh pengguna pada masa jalan, yang boleh dicapai dengan bantuan atribut panjang. Artikel ini bertujuan untuk menerangkan proses lulus dan mendapatkan bilangan hujah yang dibekalkan pengguna dengan bantuan program sampel. Dapatkan bilangan argumen yang disediakan oleh pengguna pada masa jalankan Sebelum mencari bilangan argumen baris arahan, langkah pertama kami ialah mencipta program yang membolehkan pengguna menghantar argumen pada masa jalankan. Parameter string[] Semasa menulis atur cara Java, kita sering menemui kaedah main(). Apabila JVM memanggil kaedah ini, aplikasi Java mula melaksanakan. Ia digunakan dengan hujah yang dipanggil String[]args

Perintah Linux adalah salah satu alat yang sangat diperlukan dalam kerja harian pentadbir sistem. Ia boleh membantu kami menyelesaikan pelbagai tugas pengurusan sistem. Dalam kerja operasi dan penyelenggaraan, kadangkala perlu menyemak bilangan proses tertentu dalam sistem untuk mengesan masalah dan membuat pelarasan dalam masa. Artikel ini akan memperkenalkan cara menggunakan arahan Linux untuk menyemak bilangan proses telnet, mari kita belajar bersama. Dalam sistem Linux, kita boleh menggunakan arahan ps digabungkan dengan arahan grep untuk melihat bilangan proses telnet. Pertama, kita perlu membuka terminal,

Mendapatkan jumlah siri adalah salah satu tugas amalan yang paling mudah apabila kita mempelajari pengaturcaraan dan pembinaan logik. Dalam matematik, terdapat cara untuk mencari jumlah siri yang hadir dalam siri yang berbeza. Dalam pengaturcaraan kami menjananya satu demi satu dengan melaksanakan logik dan menambahnya berulang kali untuk mendapatkan jumlah atau melakukan apa-apa lagi seperti yang diperlukan. Dalam artikel ini, kami akan memperkenalkan teknik mendapatkan jumlah semua nombor ganjil hingga N menggunakan C++. Terdapat dua cara yang mungkin untuk mendapatkan jumlah ini, tetapi dengan kelainan. Mari kita lihat kaedah ini satu persatu. Algoritma dihadkan pada nombor N. Mulakan jumlah kepada 0. i berkisar antara 1 hingga N. Jika saya ialah nombor ganjil, maka. Jumlah:=jumlah+i. Jika ia berakhir. Paparkan jumlahnya. Contoh#include<iostre

Kami mempunyai dua tatasusunan integer, satu dengan elemen yang dikira dan satu lagi dengan titik pisah yang diperlukan untuk memisahkan tatasusunan untuk menghasilkan subset, kita perlu mengira jumlah setiap subset dalam setiap pecahan dan mengembalikan subset maksimum Mari kita lihat contoh Pemahaman: - input −intarr[]=intarr[]={9,4,5,6,7}intsplitPoints[]={0,2,3,1}; 13,9,9] Penjelasan − Di sini kita menguraikan tatasusunan mengikut titik pecahannya dan mendapatkan subset maksimum selepas setiap pecahan dan selepas pecahan pertama → {9} dan {4,5,6,7 }>>Jumlah maksimum subarray ialah -22 selepas pemisahan kedua→{9},{4

Dalam artikel ini, kami akan menggunakan C++ untuk menyelesaikan masalah mencari bilangan subarray yang nilai maksimum dan minimumnya adalah sama. Berikut ialah contoh masalah −Input:array={2,3,6,6,2,4,4,4}Output:12Penjelasan:{2},{3},{6},{6}, {2 },{4},{4},{4},{6,6},{4,4},{4,4}dan{4,4,4}arethesubarraysyang boleh dibentuk denganmaksimumdanminimumelemensama.Input:array={3, 3, 1,5,

Memandangkan pokok N-ary, tugas kita adalah untuk mencari jumlah cara untuk melintasi pokok itu, cth. - untuk pokok di atas, output kita ialah 192. Untuk masalah ini, kita memerlukan sedikit pengetahuan tentang kombinatorik. Sekarang dalam masalah ini kita hanya perlu menyemak semua kemungkinan kombinasi setiap laluan dan ini akan memberi kita jawapannya. Kaedah untuk mencari penyelesaian Dalam kaedah ini, kita hanya perlu melakukan traversal hierarki, periksa bilangan anak setiap nod, dan kemudian darab secara berfaktor dengan jawapannya. Contoh kod C++ kaedah di atas #include<bits/stdc++.h>usingnamespacestd;structNode{//s
