`
zyn010101
  • 浏览: 325097 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

从m个字符选出n个的所有组合

阅读更多

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Zuhe {
 //全局变量,存储所有字符组合
 List<Object> list = new ArrayList<Object>();

 public void getNext(String begin, String[] s, int num) {
  if (num > 1) {
   for (int i = 0; i < s.length - num+1; i++) {
    //取出一个字符
    String str = s[i];
    //数组后边的元素组成新数组
    String[] newS = Arrays.copyOfRange(s, i + 1, s.length);
    //递归,从后面的n-1个数种选出num-1个
    getNext(begin == null ? str : (begin + "-" + str), newS,num - 1);
   }
  } else {
   //如果从剩下的s中选出1个数,那么前缀依次和s中的所有元素组合一次
   for (int b = 0; b < s.length; b++) {
    list.add(begin + "-" + s[b]);
   }

  }

 }

 /**
  * @param args
  *            Administrator 2013-4-23 下午2:15:43
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  String[] str = { "a", "b", "c", "d", "e", "f", };
  Zuhe z = new Zuhe();
  z.getNext(null, str, 3);
  System.out.println(z.list);
 }

0
5
分享到:
评论

相关推荐

    从n个数组中取出所有排列组合(Java实现)

    排列是指从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列的所有可能的方式;组合则是指不考虑元素的顺序,仅考虑元素的选取。在这个问题中,我们不仅要考虑元素的选取,还要考虑它们的顺序,因此属于...

    python实现n个数中选出m个数的方法

    标题中的“python实现n个数中选出m个数的方法”是指在Python编程环境中,如何从一个包含n个元素的集合中选择出m个元素的所有可能组合。这个问题在计算机科学和算法设计中通常被称为组合问题,它涉及到组合数学和回溯...

    Go语言实现的排列组合问题实例(n个数中取m个)

    本文将详细介绍如何使用Go语言来解决一个具体的排列组合问题:从n个数中选取m个数的所有可能组合,并通过一个实际的示例来展示其实现过程。 #### 二、组合问题解析 组合是指从n个不同元素中取出m(m≤n)个元素并组成...

    组合数学(清华二版)答案

    \) 表示从8个元素中选出5个元素的所有组合方式,再从另外7个元素中选出所有元素的所有排列方式,并乘以从5个元素中选出所有元素的所有排列方式。 - (c) \(2P(5,3)8!\) 表示两次从5个元素中选取3个元素的所有排列...

    组合数学资料

    例如,从5个人中选出3个人参加比赛,如果关注的是谁被选中而非他们出场的顺序,那么这个问题就是关于组合的;如果还考虑了出场顺序,那便是排列问题。 #### 三、加法法则与乘法法则 加法法则和乘法法则是组合数学...

    组合数学期末考试2017秋r3final答案1

    因此,解法为C(n-r+1, r),其中C(n, k)表示组合数,表示从n个不同元素中不重复地选择k个元素的方法数。 2. **斐波那契数列与递推关系**: - (1)对于不允许出现连续三个相同数字的n位二进制串,可以使用递推关系...

    c语言题库c语言题库.docx

    本题目要求使用递归函数求组合数C(n, m),即从n个不同元素中选出m个元素的不同组合的数量。 #### 公式: \[ C(n, m) = C(n-1, m-1) + C(n-1, m) \] #### 解决方案: 1. **递归函数** `int comb(int n, int m)`: -...

    Securing the Barn

    给定一组字符,要求从中选出长度为 `m` 的子序列(连续或不连续),并满足以下条件: - 子序列中至少包含一个元音字母('a', 'e', 'i', 'o', 'u')。 - 子序列中至少包含两个辅音字母。 需要输出所有符合条件的子...

    经典算法实例.pdf

    这个问题的递归解法可以分为三个步骤:将前n-1个盘子从A移动到B(辅助棒),将最大的盘子从A移动到C(目标棒),最后将B上的n-1个盘子移动到C。河内之塔问题的解决通常需要2^n - 1次移动,其中n是盘子的数量。 接...

    算法大全(C语言版本)很经典

    - **定义**: 从m个元素的集合中选出n个元素的所有组合。 - **应用场景**: 数据分析、算法设计等。 ### 30. 数字拆解 #### 说明 - **定义**: 将一个数分解成各个位上的数字。 - **应用场景**: 数学游戏、教学工具等...

    算法设计源代码

    - **时间复杂度**:最坏情况下为O(m*n),其中m为模式串长度,n为目标字符串长度。 - **空间复杂度**:O(1),因为除了存储字符串本身之外,不需要额外的空间。 ### 知识点二:枚举方程求根 枚举法是求解方程的一种...

    数据结构试卷及答案.doc

    2. **图**:无向图的顶点数为n时,其最多边的数量是n(n-1)/2,因为每条边连接两个不同的顶点,所以边数不会超过所有可能的顶点对组合。 3. **非线性数据结构**:非线性数据结构包括树、图等,它们的结构复杂,不能...

    数据结构考试题

    对于n个顶点的无向图,最大边数可以通过组合公式\(C(n,2)\)计算得到,即\(\frac{n(n-1)}{2}\)。 - 因此,正确答案是B。 **3. 非线性数据结构** - **选项分析**: - A项:树是一种典型的非线性数据结构,正确。 -...

    Oracle数据库SQL及常用函数命令简介

    - **主码**:在一个关系的多个候选码中选出的一个用于唯一标识元组的属性组。 - **外部码**:当一个属性组不是本关系的主码,而是另一个关系的主码时,这个属性组在这个关系中称为外部码。 6. **完整性约束** - ...

    大一c语言考试试题.doc

    14. 设a、b、c、d、m、n均为int型变量,且5、6、7、8、2、1,则逻辑表达式(a)(c) 的值为? 答案:B、1 解释:C语言中,可以使用逻辑运算符来判断多个条件。 15. 设x、y和z均为int型变量,则以下语句:{; ; ;} 的...

    2017NOIP题目 111

    9. **组合计数**:甲选2门,乙、丙各选3门,可以看作是4门课程中选出2门的组合数C(4,2),再加上2个3门课程的组合数C(4,3),总共是C(4,2)*2+C(4,3)=6*2+4=16种。 10. **图的性质**:一个连通图变成树需要删除的边数...

    2013暑期多校联合训练第一场0723-解题报告

    - **不包含端点的情况:** 当被选出的点不包含端点时,共有(n - k - 1)种方法,剩余未被选中的点之间还有(n - k - 2)个位置可以断开,因此总的方案数为\(2^{(n-k-2)} * (n-k-1)\)。 - **包含端点的情况:** 当被...

    2011年3月计算机二级Access笔试试题及答案(纯word版).pdf

    8. **实体联系**:教师和课程之间的联系是多对多(m:n),因为一个教师可以教多门课,一门课也可以由多个教师教授。 9. **关系数据库操作**:自然连接、交、除和并是基本的数据库操作。这里的关系T是通过R和S的关系...

Global site tag (gtag.js) - Google Analytics