Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bilangan kali tatasusunan boleh berulang kali dibahagikan kepada subarray dengan jumlah yang sama

Bilangan kali tatasusunan boleh berulang kali dibahagikan kepada subarray dengan jumlah yang sama

PHPz
PHPzke hadapan
2023-09-06 12:21:071036semak imbas

Bilangan kali tatasusunan boleh berulang kali dibahagikan kepada subarray dengan jumlah yang sama

Dalam C++, kami mempunyai fail pengepala vektor yang boleh menukar saiz tatasusunan semasa masa jalan. Dalam artikel ini, kita akan mempelajari konsep berapa kali tatasusunan boleh berulang kali dibahagikan kepada sub-tatasusunan dengan jumlah yang sama.

Mari kita ambil contoh untuk menunjukkan partition tatasusunan dengan jumlah yang sama.

Tatasusunan yang diberikan ialah {1,2,3,4,2}, kami membahagikan tatasusunan kepada dua bahagian −

{1,2,3}- Jumlah keseluruhan setiap indeks tatasusunan ialah 6.

{4,2} - Jumlah setiap indeks tatasusunan ialah 6.

Jadi, 2 kali saiz tatasusunan yang diberikan boleh dibahagikan kepada sub-tatasusunan dengan jumlah yang sama.

Algoritma

  • Kami akan memulakan program dengan fail pengepala ‘iostream’ dan ‘vektor’.

  • Sekarang kita mulakan program dengan mencipta kelas bernama ‘isPartition_arr’.

    Dalam bahagian awam, isytiharkan pembina bernama ‘isPartition_arr’ yang menerima num sebagai parameter untuk menyelesaikan nilai elemen tatasusunan.

  • Kami mentakrifkan fungsi bernama ‘cnt_Partition’ daripada jenis integer untuk mengira jumlah bilangan kali tatasusunan boleh dibahagikan.

  • Kami memulakan pembolehubah 'sum' kepada '0', yang kemudiannya akan digunakan untuk menjumlahkan tatasusunan dan menyimpan '0' ke dalam pembolehubah 'count', yang digunakan untuk menjejaki elemen tatasusunan Menambah kiraan. Kemudian isytiharkan gelung for untuk berulang pada setiap elemen vektor ‘arr’.

  • Kami memulakan pembolehubah ‘current_sum’ kepada ‘0’ dan mengulangi setiap elemen menggunakan gelung

  • Selepas melengkapkan gelung for, kami mula menggunakan gelung sementara untuk melelaran melalui setiap elemen.

    Jika ‘current_sum’ sama dengan ‘sum/2’, maka kiraan akan dinaikkan ‘1’ dan set semula ‘current_sum’ kepada ‘0’. Seterusnya, mengembalikan ‘cnt’ akan mengira bilangan kali tatasusunan boleh dibahagikan sama rata.

  • Kami bermula dari fungsi utama dan mencipta ‘num’ vektor jenis integer untuk menyimpan nilai tatasusunan.

  • Kemudian kita lulus nilai ‘num’ dengan mencipta objek kelas Seterusnya, kita panggil fungsi ‘cnt_partition’ dengan mengambil objek dan menyimpannya dalam pembolehubah ‘c’

  • Akhir sekali, kami mencetak pernyataan output sebagai "Bilangan kali tatasusunan boleh dibahagikan kepada dua subbarray dengan jumlah yang sama" dengan bantuan pembolehubah
  • 'c'

    .

    Terjemahan bahasa Cina bagi
  • Contoh
ialah:

Contoh

Dalam program ini, kita akan mendapati bilangan kali tatasusunan boleh berulang kali dibahagikan kepada dua subarray supaya jumlahnya adalah sama.

#include <iostream>
#include <vector>
using namespace std;
class isPartition_arr {
   public:
   vector<int> arr;
   isPartition_arr(vector<int>& num) {
      arr = num;
   }
   int cnt_Partition() {
      int sum = 0, count = 0;
      for (int i = 0; i < arr.size(); i++) {
         sum += arr[i];
      }
      int current_sum = 0, j=0;
      while( j < arr.size() ) {
         current_sum += arr[j];
         if (current_sum == sum / 2) {
            current_sum = 0;
            count++;
         }
         j++;
      }
      return count;
   }
};
int main() {
   vector<int> num = {1, 2, 3, 4, 5, 5};
   isPartition_arr A(num);
   int c = A.cnt_Partition();
   cout <<"Number of times an array can be partitioned into\t"<< c <<"\t two subarrays with equal sum " << endl;
   return 0;
}

Output

Number of times an array can be partitioned into   2   two subarrays with equal sum 

Kesimpulan

Kami meneroka konsep pembahagian tatasusunan jumlah sama rata dan mempelajari cara membahagi tatasusunan kepada bahagian yang berbeza dan menjadikan jumlah itu sama. Kami menggunakan konsep berorientasikan objek untuk menyelesaikan masalah ini kerana kod lebih mudah dibaca dan program C++ boleh ditakrifkan dengan cekap.

Atas ialah kandungan terperinci Bilangan kali tatasusunan boleh berulang kali dibahagikan kepada subarray dengan jumlah yang sama. 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
Artikel sebelumnya:Sifat kelas ThreadArtikel seterusnya:Sifat kelas Thread