http://www.cnblogs.com/JeffreyZhao/archive/2009/06/21/1507847.html#
给出sum、min、max和n四个正整数,请输出所有将sum拆分为n个正整数之和,其中每个正整数k都满足:min <= k <= max。这n个正整数之间可以重复,不过由于加法交换率的作用,1 + 2和2 + 1便算是重复的拆分了
private static void DoBest(int[] array, int sum, int n, int minInclusive, int maxInclusive) { int index = array.Length - n; if (n == 1) { array[index] = sum; PrintResult(array); return; } int itemMinInclusive = Math.Max(sum - maxInclusive * (n - 1), minInclusive); int itemMaxInclusive = sum / n; for (int i = itemMinInclusive; i <= itemMaxInclusive; i++) { array[index] = i; DoBest(array, sum - i, n - 1, i, maxInclusive); } }
本文介绍了一个整数划分问题的解决方案,即如何将一个整数拆分成若干个指定范围内的正整数之和,并提供了一个具体的Java实现方法。该方法考虑了最小值、最大值和拆分数目等限制条件。
717

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



