一个数组可以重复分割成具有相等和的子数组的次数

一个数组可以重复分割成具有相等和的子数组的次数

在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 #include using namespace std;class isPartition_arr {   public:   vector arr;   isPartition_arr(vector& 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 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 intot"<< 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++程序。

以上就是一个数组可以重复分割成具有相等和的子数组的次数的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1444464.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 21:33:31
下一篇 2025年12月16日 12:07:42

相关推荐

  • C程序用于在数组中找到第二大和第二小的数字

    输入数组元素,然后使用交换技术按降序排列数字。随后,在索引位置的帮助下,尝试打印数组中第二大和第二小的元素。 数组用于保存同一个名称下的一组公共元素。 数组用于保存同一个名称下的一组公共元素。 p> C 语言中的数组操作如下 – 插入删除搜索 li> 算法 下面给出的是一种查…

    2025年12月17日
    000
  • 用C++编写一个程序,找出数组中所有元素对之间第k小的差值

    假设我们有一个包含多个整数的列表。我们必须找出数组中每对值之间的差异,并找出第 k 个最小的差异数。索引从 0 开始,值 k 作为输入提供给我们。 因此,如果输入类似于numbers = {2, 6, 4, 8}, k = 2,那么输出将为 2。 两对之间的差异为 – (2, 6) = …

    2025年12月17日
    000
  • C程序在数组中找到最小和最大的质数

    问题陈述 给定一个包含 n 个正整数的数组。我们必须找到素数具有最小值和最大值的数字。 如果给定的数组是 – arr [] = {10, 4, 1, 12, 13, 7, 6, 2, 27, 33}then minimum prime number is 2 and maximum pr…

    2025年12月17日
    000
  • 使用给定的操作将数组缩减为一个整数,使用C++实现

    给定一个整数变量Number作为输入。让我们考虑一个包含范围在1到Number之间的元素的数组,元素的顺序可以是任意的。如果我们在数组上执行Number-1次操作,操作如下: 我们从数组中选择两个元素A和B 从数组中移除A和B 将A和B的平方和添加到数组中 立即学习“C++免费学习笔记(深入)”; …

    2025年12月17日
    000
  • 使用C++将数组重新排列为最大最小形式

    我们得到一个排序数组。我们需要以最大、最小形式排列这个数组,即第一个元素是最大元素,第二个元素是最小元素,第三个元素是第二个最大元素,第四个元素是第二个最小元素,依此类推,例如 – Input : arr[ ] = { 10, 20, 30, 40, 50, 60 }Output : {…

    2025年12月17日
    000
  • 在C/C++中,4维数组

    一个4维数组是由3维数组组成的数组。 算法 Begin. Declare the variables. Declare the array elements. Take the no of elements as input. Take the elements as input. Print th…

    2025年12月17日
    000
  • 在C程序中,从给定的数组中打印下三角矩阵模式

    给定一个 n x n 的矩阵,任务是以下三角形式打印出该矩阵。 下三角矩阵是一个矩阵,其主对角线以下的元素包括主对角线元素,其余元素均为零。 我们通过以下图示来理解: 上述绿色元素是主对角线以下的元素,红色元素是主对角线以上的元素,它们被设为零。 示例 Input: matrix[3][3] = {…

    2025年12月17日
    000
  • C++另一个数组中较小值的排列

    本教程中提供了两个数组 A 和 B。例如,我们需要输出 A 的任意排列,使得 A[ I ] > B[ I ] 的索引最大化,例如 Input: A = [12, 22, 41, 13],B = [1, 20, 10, 12]Output: 12, 22, 41, 13Input: A = [2…

    2025年12月17日
    000
  • 如何在C语言中将数组中的单个元素作为参数传递给函数?

    如果要将单个元素作为参数传递,则在函数调用中必须给出数组元素及其下标。 为了接收这些元素,在函数定义中使用简单变量。 示例1 #includemain (){ void display (int, int); int a[5], i; clrscr(); printf (“enter 5…

    2025年12月17日
    000
  • 使用C++编写一个程序来找到具有给定范围内和的子数组的数量

    在本文中,我们将使用 C++ 程序求解总和在给定范围内的子数组的数量。我们有一个正整数数组 arr[] 和一个范围 {L, R},我们必须计算总和在给定范围 L 到 R 内的子数组的总数。所以这是该问题的简单示例 – Input : arr[] = {1, 4, 6}, L = 3, R…

    2025年12月17日
    000
  • C/C++程序中的数组

    数组是一组固定数量的相同数据类型的项目。这些元素存储在内存中的连续内存位置中。 可以使用方括号“[]”和数组名称像a[4]、a[3]等从其索引值访问值的每个单个元素。 声明数组 在c/c++编程语言中,通过定义数组的类型和长度(元素数量)来声明数组。下面的语法显示了在c/c++中声明数组的方法− d…

    2025年12月17日
    000
  • 使用C++编写,找到子数组中的质数数量

    在本文中,我们将描述查找子数组中素数数量的方法。我们有一个正数数组 arr[] 和 q 个查询,其中有两个整数表示我们的范围 {l, R},我们需要找到给定范围内的素数数量。下面是给定问题的示例 – Input : arr[] = {1, 2, 3, 4, 5, 6}, q = 1, L…

    2025年12月17日
    000
  • C++程序以递增顺序重新排列数组中所有x的倍数元素

    我们有一个整数类型的数组 `int arr[]` 和一个整数类型的变量 `x`。任务是重新排列数组的所有元素,使它们能够被给定的整数值 `x` 整除,并且排列顺序应该是递增的。 让我们看看这个问题的各种输入输出情况: 输入 – int arr[] = {4,24, 3, 5, 7, 22…

    2025年12月17日
    000
  • 在C语言中,结构体(Structure)和数组(Array)之间的区别是什么?

    在 C 中,结构体和数组都用作数据类型的容器,即在结构体和数组中我们都可以存储数据,也可以对它们执行不同的操作。 基于内部实现,以下是两者之间存在一些基本差异。 Sr.编号 键 结构 数组 1定义结构体可以定义为一种数据结构,用作容器,可以容纳不同类型的变量。另一方面,数组是一种用作容器的数据结构,…

    2025年12月17日
    000
  • 使用交换最小化两个数组中最大数的乘积

    数据结构操作现在已成为现代编程和计算中成功解决方案开发的一个重要方面。这是由于随着时间的推移,这些结构所呈现的复杂性不断增加。一个例子是执行交换操作以最小化包含在两个数组中的最大数的总和,从而降低它们的整体值。在这篇文章中,我们讨论了两种使用C++完成这些任务的方法,同时根据不同观点承认了这两种方法…

    2025年12月17日
    000
  • 在C程序中,将一个数组中具有最大AND值的一对元素打印出来

    根据问题,我们给定了一个包含n个正整数的数组,我们需要从数组中找到具有最大AND值的一对。 示例 Input: arr[] = { 4, 8, 12, 16 }Output: pair = 8 12The maximum and value= 8Input:arr[] = { 4, 8, 16, 2…

    2025年12月17日
    000
  • 在C++中,查找未排序数组中元素的起始索引和结束索引

    在这个问题中,我们得到一个包含 n 个未排序整数值的数组 aar[] 和一个整数 val。我们的任务是在未排序的数组中查找元素的开始和结束索引。 对于数组中元素的出现,我们将返回, “起始索引和结束索引”(如果在数组中找到两次或多次)。 “单个索引”(如果找到) 立即学习“C++免费学习笔记(深入)…

    2025年12月17日
    000
  • 将数组表示的数字加1(递归方法)

    给定一个数组,该数组是由非负数字表示的数字的集合,将数字加1(增加由数字表示的数字)。数字存储方式是最高位数字是数组的第一个元素。 要将数字加1到由数字表示的数字 从数组末尾开始,加法意味着将最后一个数字4舍入为5。 如果最后一个元素是9,则将其变为0并进位=1。 对于下一次迭代,检查进位,如果加到…

    2025年12月17日
    000
  • 使用C语言在数组中插入元素

    我们可以在任意位置插入元素,这意味着我们可以在数组的起始位置、中间、最后或任意位置插入。 在数组中插入元素后,位置或索引位置增加,但并不意味着数组的大小增加。 插入元素的逻辑是− 输入数组的大小 立即学习“C语言免费学习笔记(深入)”; 输入要插入元素的位置 接下来输入您要在该位置插入的数字 for…

    2025年12月17日
    000
  • 在C语言中,什么是数组的越界索引?

    假设您有一个包含四个元素的数组。那么,数组索引将从0到3,即我们可以访问索引0到3的元素。 但是,如果我们使用大于3的索引,它将被称为索引越界。 如果我们使用越界的数组索引,那么编译器将编译甚至运行。但是,不能保证结果正确。 结果可能不确定,并且会导致许多问题。因此,建议在使用数组索引时要小心。 立…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信