一、题目描述
给定一个数组nums,将元素分为若干个组,使得每组和相等,求出满足条件的所有分组中,组内元素和的最小值。
二、输入描述
第一行输入 m
接着输入m个数,表示此数组nums
数据范围:1<=m<=50, 1<=nums[i]<=50
三、输出描述
最小拆分数组和。
四、解题思路
虽然题意很简单,看着很简单,其实这道题是有点难度的,100分你能抽到这道题,自求多福吧,兄弟。
比如:
4 3 2 3 5 2 1
可以组合成
4 1
3 2
3 2
5
解题思路:
1、答案一定在最大值与所有数的和之间,拿到这个值看是否能够满足条件;
2、用深度优先搜索,搜索一种方法满足子数组合能够满足target值的解;
3、每次从上一次找的数后面的数开始递归,这个优化非常重要,不加的话会把之前的结果再找一遍,例如,我本次递归取了第2个数,然后下面再取第5个数,当我下次递归取了第5个数的时候,如果不从第5个数之后来选,就会搜到上面一样取到第二个数,那里的结果我们之前是已经搜索过了的。
五、Java算法源码
package
该博客分享了一道华为OD机试中的算法题,涉及等和子数组的最小和求解。博主给出了题目描述、输入输出格式,并详细解释了解题思路,使用深度优先搜索策略,优化了搜索过程,避免重复计算。同时提供了Java算法源码和效果展示。
订阅专栏 解锁全文
333

被折叠的 条评论
为什么被折叠?



