使用C++编写代码,找到具有奇数和的子数组的数量
子数组是数组的连续部分。例如,我们考虑一个数组 [5, 6, 7, 8],那么有十个非空子数组,如 (5), (6), (7), (8), (5, 6), (6 ,7)、(7,8)、(5,6,7)、(6,7,8) 和 (5,6,7,8)。
在本指南中,我们将解释在 C++ 中查找所有可能的信息来查找具有奇数和的子数组的数量。为了找到奇数和的子数组的数量,我们可以使用不同的方法,所以这里是一个简单的例子 -
Input : array = {9,8,7,6,5} Output : 9 Explanation : Sum of subarray - {9} = 9 {7} = 7 {5} = 5 {9,8} = 17 {8,7} = 15 {7,6} = 13 {6,5} = 11 {8,7,6} = 21 {9,8,7,6,5} = 35
暴力方法
通过这种方法,我们可以简单地检查所有子数组中元素的总和是偶数还是奇数,如果是偶数,我们将拒绝该子数组并计算总和为奇数的子数组,这不是一种有效的方法,因为此代码的复杂度为 O(n2)。
示例
#include <bits/stdc++.h> using namespace std; int main(){ int n=5, temp = 0; int a[n-1] = { 9,8,7,6,5 } ; // declaring our array. int cnt = 0; // counter variable. for(int i = 0; i < n; i++){ temp = 0; // refreshing our temp sum. for(int j = i; j < n; j++){ // this loop will make our subarrays starting from i till n-1. temp = temp + a[j]; if( temp % 2 == 1 ) cnt++; } } cout << "Number of subarrays with odd sum : " << cnt << "\n"; return 0; }
输出
Number of subarrays with odd sum : 9
上述代码说明
此代码中使用了嵌套循环,其中外层循环用于递增 I 的值,I 指向数组从头开始的每个值;内循环用于查找从位置 " i " 开始的具有奇数和的子数组。
高效方法
在这种方法中,我们正在处理每个从数组中第 0 个位置开始的元素。如果当前元素是奇数,则为每个偶数增加一个奇数计数器并增加一个偶数计数器。如果我们找到一个奇数,则交换 Even 和 odd 的值,因为向子数组添加奇数会改变其奇偶校验,最后向结果添加一个计数。这段代码的复杂度是 O(n),因为我们正在处理每个元素。
示例
#include <bits/stdc++.h> using namespace std; int main(){ int odd = 0, even = 0, result = 0,n=5,i,temp; int arr[ n-1 ] = { 9,8,7,6,5}; // initialising the array // for loop for processing every element of array for ( i = 0 ; i < n ; i ++ ) { if ( arr[ i ] % 2 == 0 ) { even++; } else { // swapping even odd values temp = even; even = odd; odd = temp + 1; } result += odd; } cout << "Number of subarrays with odd sum : " << result; }
输出
Number of subarrays with odd sum : 9
上述代码的解释
在这段代码中,我们检查每个元素的偶数/奇数,并为偶数增加偶数计数器,为奇数增加奇数计数器。此外,如果找到奇数,我们将交换奇偶计数器值;否则,它将改变子数组的奇偶校验。然后在每次迭代后将奇数计数器的值添加到结果变量中。
结论
在本文中,我们解释了如何从 Brute 中查找总和为奇数的子数组的数量强制方法,生成每个子数组的总和为奇数并递增计数。这段代码的时间复杂度是O(n2)。一种有效的方法是遍历数组的每个元素,并用找到的每个奇数/偶数增加奇数/偶数计数器变量,如果找到奇数则交换计数器;这段代码的时间复杂度是O(n)。希望您发现本文有助于理解问题和解决方案。
以上是使用C++编写代码,找到具有奇数和的子数组的数量的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

分布外(OOD)检测对于开放世界智能系统的可靠运行至关重要,但目前面向对象的检测方法存在「评估不一致」(evaluationinconsistencies)的问题。之前的工作OpenOODv1统一了OOD检测的评估,但在可扩展性和可用性方面仍然存在限制。最近开发团队再次提出OpenOODv1.5,相比上一版本,新的OOD检测方法评估在确保准确、标准化和用户友好等方面得到显著提升。图片Paper:https://arxiv.org/abs/2306.09301OpenOODCodebase:htt

在准确率-召回率曲线上,同样的点是用不同的坐标轴绘制的。警告:左边的第一个红点(0%召回率,100%精度)对应于0条规则。左边的第二个点是第一个规则,等等。 Skope-rules使用树模型生成规则候选项。首先建立一些决策树,并将从根节点到内部节点或叶子节点的路径视为规则候选项。然后通过一些预定义的标准(如精确度和召回率)对这些候选规则进行过滤。只有那些精确度和召回率高于其阈值的才会被保留。最后,应用相似性过滤来选择具有足够多样性的规则。一般情况下,应用Skope-rules来学习每个根本原因的

在Java中,在运行时传递参数的一种方法是使用命令行或终端。在检索命令行参数的这些值时,我们可能需要查找用户在运行时提供的参数数量,这可以借助length属性来实现。本文旨在借助示例程序解释传递和获取用户提供的参数数量的过程。获取用户在运行时提供的参数数量在查找命令行参数的数量之前,我们的第一步是创建一个允许用户在运行时传递参数的程序。字符串[]参数在编写Java程序时,我们经常遇到main()方法。当JVM调用此方法时,Java应用程序开始执行。它与一个名为String[]args的参数一起使

Linux命令是系统管理员日常工作中必不可少的工具之一,它们可以帮助我们完成各种系统管理任务。在运维工作中,有时候需要查看系统中某个进程的数量以便及时发现问题和进行调优。本文将介绍如何使用Linux命令查看telnet进程的数量,让我们一起来学习吧。在Linux系统中,我们可以使用ps命令结合grep命令来查看telnet进程的数量。首先,我们需要打开终端,

我们有两个整数数组,一个具有计算的元素,另一个具有分割数组以生成子集所需的分割点,我们必须计算每个分割中每个子集的总和并返回最大子集让我们通过示例来理解:-输入−intarr[]=intarr[]={9,4,5,6,7}intsplitPoints[]={0,2,3,1};输出−每次分割后的最大子数组和[22,13,9,9]解释−这里我们根据数组的分割点来分解数组,并在每次分割后获得最大子集和第一次分割后→{9}和{4,5,6,7}>>最大子数组总和为-22第二次分割后→{9},{4

在我们学习编程和逻辑构建时,获取级数和是最简单的练习任务之一。在数学中,有一些方法可以找到不同级数中存在的级数之和。在编程中,我们通过实现逻辑将它们一一生成,并重复将它们相加以获得总和,否则根据需要执行任何其他操作。在本文中,我们将介绍使用C++获取N以内所有奇数之和的技术。有两种可能的方法可以得到这个总和,但有一点变化。让我们一一看看这些方法。算法以数字N为上限。将总和初始化为0。i的范围从1到N。如果i是奇数,则。总和:=总和+i。如果结束。显示总和。示例#include<iostre

在本文中,我们将使用C++解决寻找最大值和最小值相同的子数组数量的问题。以下是该问题的示例−Input:array={2,3,6,6,2,4,4,4}Output:12Explanation:{2},{3},{6},{6},{2},{4},{4},{4},{6,6},{4,4},{4,4}and{4,4,4}arethesubarrayswhichcanbeformedwithmaximumandminimumelementsame.Input:array={3,3,1,5,

给定一个N叉树,我们的任务是找到遍历这棵树的总方式数,例如−对于上面的树,我们的输出将是192。对于这个问题,我们需要一些组合学的知识。现在在这个问题中,我们只需要检查每条路径的所有可能组合,这将给我们答案。找到解决方案的方法在这个方法中,我们只需要执行一次层次遍历,检查每个节点有多少个子节点,然后将其阶乘乘以答案。示例上述方法的C++代码#include<bits/stdc++.h>usingnamespacestd;structNode{//s
