陣列可重複劃分為和相等的子陣列的次數
在 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++ 程式。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP