Rumah > pembangunan bahagian belakang > C++ > 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
Lepaskan: 2023-09-06 12:21:07
ke hadapan
1123 orang telah melayarinya

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;
}
Salin selepas log masuk

Output

Number of times an array can be partitioned into   2   two subarrays with equal sum 
Salin selepas log masuk

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!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan