陣列可重複劃分為和相等的子陣列的次數


在 C++ 中,我們有一個 vector 標頭檔案,可以在執行時更改陣列的大小。在本文中,我們將學習陣列可重複劃分為和相等的子陣列的次數的概念。

讓我們舉個例子來說明和相等的陣列劃分。

給定的陣列是{1,2,3,4,2},我們將陣列細分為兩部分:

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

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

所以,給定陣列可以劃分為和相等的子陣列2次。

演算法

  • 我們將從名為‘iostream’‘vector’的標頭檔案開始程式。

  • 現在我們開始建立名為‘isPartition_arr’的類來編寫程式。

    在公共部分,宣告名為‘isPartition_arr’的建構函式,它接受 num 作為引數來處理陣列元素值。

  • 我們定義了一個名為‘cnt_Partition’的整型函式來計算陣列可以劃分的總次數。

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

  • 我們將變數‘current_sum’初始化為‘0’,並使用 for 迴圈迭代每個元素。

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

    如果‘current_sum’等於‘sum/2’,則計數將遞增‘1’,並將‘current_sum’重置為‘0’。接下來,返回‘cnt’將計算陣列可以細分為相等和的次數。

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

  • 然後我們透過建立類的物件來傳遞‘num’值。接下來,我們呼叫函式‘cnt_partition’,獲取物件並將其儲存在變數 ‘c’ 中。

  • 最後,我們使用變數‘c’列印輸出語句:“陣列可以劃分為兩個和相等的子陣列的次數”。

示例

在這個程式中,我們將找到陣列可以重複劃分為兩個和相等的子陣列的次數。

#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;
}

輸出

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

結論

我們探討了和相等的陣列劃分的概念,學習瞭如何將陣列細分為不同的部分,並使總和相等。我們使用面向物件程式設計 (OOP) 的概念來解決這個問題,因為程式碼的可讀性更好,並且可以有效地定義 C++ 程式。

更新於:2023年5月10日

瀏覽量:107

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.