`
yue198710ss
  • 浏览: 1161 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

求小于n的所有不重复组合之和等于n

 
阅读更多
import java.util.Stack;
import java.util.Vector;

/*
* 该类实现了小于n的数的所有可能组合之和等于n
*/
public class TenTest {


public static void main(String[] args) {
int n = 10;
for(int i = 1;i<n;i++){
//用栈来存放数据,方便弹出
Stack<Integer> ve =  new Stack<Integer>();
for(int j = i; j<n;j++){
ve.push(j);
int sum = 0;
for(int m= 0; m < ve.size(); m++){
sum = sum + ve.get(m);
}
if(sum == n){
System.out.println(ve);
ve.pop();
ve.pop();
continue;
}
//添加一个数之后,栈内数据之和大于n时,要考虑的情况
//之和大于等于n,弹出栈顶的两个元素
//还有添加一个数字后之和小于N,但添加下一个数之和大于n,所以弹出两个数,而有一种可能,去掉上一个数据
//加上本次数据,之和可能等于n,例如:234 235
if(sum > n){
ve.pop();
ve.pop();
ve.push(j);
sum = 0;
for(int k= 0; k < ve.size(); k++){
sum = sum + ve.get(k);
}
if(sum == n){
System.out.println(ve);
ve.pop();
}
if(sum > n){
ve.pop();
}
continue;
}

}
}


}
}

结果
[1, 2, 3, 4]
[1, 2, 7]
[1, 9]
[2, 3, 5]
[2, 8]
[3, 7]
[4, 6]
分享到:
评论

相关推荐

    和小于等于定值的所有组合

    在编程和算法设计中,"和小于等于定值的所有组合"是一个常见的问题,它涉及到排列组合的概念。这个问题的目的是找到一组数(从给定的数中选择),使得它们的和不超过一个特定的阈值。这类问题通常出现在数据分析、...

    阶乘运算m!/n!/(m-n)!

    ),是所有小于及等于n的正整数的乘积。例如,5! = 5 × 4 × 3 × 2 × 1 = 120。这个运算在C语言编程中同样被广泛使用,尤其在解决涉及排列组合问题时。 在给定的标题"阶乘运算m!/n!/(m-n)!"中,我们可以理解为...

    阶乘 组合 排列 计算程序

    阶乘是数学中的一个运算,表示一个正整数n的所有小于等于n且大于0的正整数的乘积。记为n!。例如,5! = 5 × 4 × 3 × 2 × 1 = 120。在VB中,可以创建一个递归或循环函数来计算阶乘: ```vb Function Factorial...

    n阶乘(n比较大时)

    阶乘表示为一个正整数n与小于等于n的所有正整数的乘积,通常用符号"!"来表示。例如,5的阶乘(5!)等于5×4×3×2×1=120。然而,当我们谈论“n阶乘(n比较大时)”,这个问题就涉及到大数处理和计算效率。 在...

    m盒子放n苹果 简单代码

    2. 如果n小于m,表示至少有一个盒子为空,那么对于每一个非空的盒子,我们都递归地考虑剩下的苹果和盒子。 3. 对于每个可能放入苹果的盒子(从0到n),我们减去放入的苹果数,减少一个盒子,然后调用递归函数,将...

    钱币组合问题/动态规划/C语言

    具体来说,假设我们有n种不同面值的钱币(每种钱币数量不限),我们需要找出能够组合成特定金额的方案总数。 #### 二、问题分析 问题可以分为以下几个步骤来解决: 1. **读取输入**:首先从文件`input.txt`中读取...

    【Java】阶乘和组合数.zip

    给定两个非负整数n和k,n的组合数C(n, k)表示从n个不同元素中不重复地选取k个元素的方法数。组合数的计算公式为C(n, k) = n! / [k!(n-k)!]。在Java中,我们可以直接使用阶乘函数来计算组合数: ```java public ...

    javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号

    在解决这个问题的过程中,我们首先需要了解几个基本...通过以上分析,我们能够理解该算法题目的核心逻辑和实现方法,即利用排列组合知识来解决不重复N位数的全排列问题,而不需全部生成排列,从而在计算上更加高效。

    vb写的排列组合相关小程序

    在计算机科学和数学中,排列是指从n个不同元素中取出m(m小于等于n)个元素,并按照特定顺序进行排列的方式;而组合则是指不考虑顺序,仅是从n个元素中取出m个元素的过程。 描述中提到的“实现从n个数中列举出那几...

    C#,排列组合的堆生成法(Heap’s Algorithm for generating permutations)算法与源代码

    如果n为奇数,则交换第一个和最后一个元素,如果n为偶数,则交换第i个元素(i是从0开始的计数器)和最后一个元素,并重复上述算法,直到i小于n。 在每次迭代中,算法将生成以当前最后一个元素结尾的所有组合。

    使用函数打印n*n的乘法口诀表

    当`j`小于等于`i`时,打印相应的乘法表达式。 3. **格式化输出**: - `printf`函数用于格式化输出字符串,支持多种占位符来指定输出格式。 - `printf("%d""*""%d""=""%d\t", j, i, i * j);`:这条语句利用`%d`...

    拆分自然数的几种算法.doc

    1. **定义解空间**:对于任意大于1的自然数\( n \),其可以被拆分为若干个小于\( n \)的自然数之和。 2. **确定解空间结构**:使用数组\( a[] \)来存储解空间中的每个数。 3. **搜索解空间**:通过递归的方式,在...

    组合数学参考答案(卢开澄第四版)60页.pdf

    对于条件(2),我们需要考虑差的绝对值小于等于5的情况,即差为0, 1, 2, 3, 4或5,通过列举和计算,得到总共有520对。 2. **排列问题**: 第二题考察了排列的应用。在(a)部分,女生被视为一个整体,总排列数为8...

    2018版高中数学第一章计数原理课时训练05组合及组合数公式新人教B版选修2_3

    - \( C_m^n + C_{m-1}^n = C_{m+1}^n \):这个性质表明,从n个不同元素中取m个或取m-1个元素的组合数之和等于取m+1个元素的组合数。 3. **解题技巧**: - 在处理组合问题时,需要特别注意是否考虑顺序,以及元素...

    排列组合练习之排列组合练习的后半部分

    在递归过程中,我们不仅要标记当前元素已使用(used[j]=1),还需要标记所有小于它的元素也已使用,以保证单调性。 2. **处理相邻字母**:在组合2中,除了单调上升的要求外,还需要额外检查所选元素之间是否有相邻...

    组合数学参考答案(卢开澄第四版)

    ,定义为所有小于等于n的正整数的乘积。例如,5! = 5 × 4 × 3 × 2 × 1 = 120。 ### 解题技巧与方法 #### 使用枚举法求解 在解决某些特定问题时,通过直接列举所有可能的情况来找到解是一种有效的方法。例如,...

    beibao.rar_M?n

    n" 提到的0-1背包问题稍微有些不同,目标是找出所有可能的组合,使得选取的数列之和等于给定的目标值m。 0-1背包问题的特点在于,每种物品只能选择0次或1次,不能重复选取。这里的物品就是数列1, 2, 3, ..., n中的...

    组合数学课后习题解答

    它通过交替加减单个集合大小以及两个集合交集大小的方式来实现,避免了对所有集合组合进行简单的累加而产生的重复计数。在文档中的应用,体现在验证棋手连续下棋天数的问题,以及证明从1到67的正整数分成四部分后,...

    找出数组3个数字相加为0的组合

    这种解决方案的时间复杂度是O(n^2),其中n是数组的长度,这是因为我们使用了两层循环来遍历所有可能的组合。空间复杂度是O(1),因为我们只使用了常量级别的额外空间。在实际应用中,对于大规模数据,可能会考虑更...

    高三数学n次独立重复试验及概率综合例题解析 人教版 试题.doc

    2. **二项分布**:在n次独立重复试验中,事件A恰好发生k次的概率可以用二项分布公式计算:P(k) = C(n, k) * p^k * (1-p)^(n-k),其中p是单次试验中事件A发生的概率,C(n, k)是组合数,表示从n次试验中选择k次成功的...

Global site tag (gtag.js) - Google Analytics