首頁 >後端開發 >C++ >一個陣列可以重複分割成具有相等和的子數組的次數

一個陣列可以重複分割成具有相等和的子數組的次數

PHPz
PHPz轉載
2023-09-06 12:21:071092瀏覽

一個陣列可以重複分割成具有相等和的子數組的次數

在C 中,我們有一個vector頭文件,可以在運行時更改數組的大小。在本文中,我們將學習數組可以重複分割成具有相等和的子數組的次數的概念。

Let’s take an example to show an array partition with an equal sum.

給定的陣列是{1,2,3,4,2},我們將陣列分成兩部分−

{1,2,3}- The total sum of each index of an array is 6.

{4,2}- 陣列每個索引的總和為 6

所以,給定數組的數量的2倍可以被分割成具有相等和的子數組。

Algorithm

  • 我們將以頭檔‘iostream’‘vector’開始程式。

  • Now we start the program by creating a class named ‘isPartition_arr’.

    在公共部分中,宣告名為‘isPartition_arr’的建構函數,該函數接受num作為參數來解決陣列元素的值。

  • We are defining a function named ‘cnt_Partition’ of integer type to calculate the total number of times an array can be partitioned.

  • 我們將變數'sum' 初始化為'0',稍後將用於對陣列進行求和和儲存'0' 到變數'count' 中,用於追蹤陣列元素的遞增計數。然後宣告 for 迴圈以迭代 ‘arr’ 向量的每個元素。

  • We are initializing the variable ‘current_sum’ to ‘0’ and iterating over each element using for loop.

  • 在完成 for 迴圈後,我們開始使用 while 迴圈來迭代每個元素。

    如果'current_sum'等於'sum/2',那麼計數將增加'1'並將'current_sum'重置為'0'。接下來,回傳‘cnt’將計算陣列可以被等分的次數。

  • 我們從主函數開始,建立一個‘num’類型為整數的向量來儲存陣列的值。

  • Then we pass the 'num' value by creating the object of the class. Next, we call the function 'cnt_partition' by taking the object and storing it in the variable 'c'.

  • #Finally, we print the output statement as “Number of times of an array can be partitioned into two subarrays with equal sum” with the help of variable 'c'.

#Example

的中文翻譯為:

範例

在這個程式中,我們將找到一個陣列可以被重複分割成兩個子數組,使得它們的和相等的次數。

#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 

結論

我們探索了等和陣列劃分的概念,學習如何將陣列分割成不同的部分,並使總和相等。我們使用物件導向的概念來解決這個問題,因為程式碼的可讀性更好,並且能夠有效率地定義一個C 程式。

以上是一個陣列可以重複分割成具有相等和的子數組的次數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除