找到多种方法将数组划分为任意数量的子数组,使得每个子数组的总和为奇数

问题描述 投票:0回答:1

已经给出了一个数组。该数组仅包含正元素。它包含偶数和奇数元素。我需要找到一种方法将数组划分为一个或多个子数组,使得每个子数组的总和都是奇数。

例如:(1, 1, 2, 1) 可以被除以使得每个子数组和都是奇数

  • [1,1,2,1]
  • [1] [1,2] [1]
  • [1] [1] [2,1] 共有 3 种方法,因此答案是 3

我正在考虑动态编程方法,但我认为它行不通,因为约束非常高。

arrays algorithm partition
1个回答
0
投票

注意:这不是答案,而是评论(我没有足够的声誉来发表评论)。所以,当任何有代表的人。 > 50 非常乐意将我的问题粘贴为评论,请回复此“答案”,以便我可以将其删除。

根据您的示例,不允许对元素进行重新排序(排列)(否则,结果将与 3 不同)

但是子数组是否必须包含初始数组的连续元素?或者我们可以在形成子数组时选择一个元素,跳过第二个元素,然后再次选择第三个元素吗?

我能想到的最简单的例子是 {11, 21, 31, 40}

如果允许元素不连续,我们可以有3种解决方案: [11,40] [21] [31]; [11][21,40][31]; [11][21][31,40]

如果连续元素是约束,则只有最后一个解决方案有效。

© www.soinside.com 2019 - 2024. All rights reserved.