当前位置:首页 > 开发 > 编程语言 > 搜索 > 正文

深度优先搜索解组合问题(JAVA)

发表于: 2012-11-10   作者:128kj   来源:转载   浏览:
摘要: 题:输出从n不同元素中取m个的所有组合 下面程序使用了深度优先搜索: public class  Combination{   private char a[]; //存储初始字符串   private char r[]; //存储组合结果   public Combination(char[] a){    
题:输出从n不同元素中取m个的所有组合
下面程序使用了深度优先搜索:
public class  Combination{
  private char a[]; //存储初始字符串
  private char r[]; //存储组合结果

  public Combination(char[] a){
    this.a=a;
    r=new char[a.length];
  }
//n, 初始字符串的长度
//m, 所求组合的长度
//k, 初始集合中当前处理位置, a[k]
//index 组合的当前长度
void combination(int n, int m, int k, int index){
 
  if(index == m){ //输出组合结果
   for(int i = 0; i < m; ++i)
    System.out.print(r[i]);
   System.out.println();
   return;
  }

  for(int i = k; i < n; ++i){
   r[index] = a[i];
   combination(n, m, i + 1, index + 1);//注意第三个参数是i + 1
  }
}

public static void main(String[] args){
  char[] a={'a','b','c','d','e'};
  Combination c=new Combination(a);
  c.combination(5, 3, 0, 0);
}
}

运行:
D:\tutu>java   Combination
abc
abd
abe
acd
ace
ade
bcd
bce
bde
cde

源码:

深度优先搜索解组合问题(JAVA)

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
堆栈的访问规则被限制为Push和Pop两种操作,Push(入栈或压栈)向栈顶添加元素,Pop(出栈或弹出)
遍历,直到图中所有顶点都被访问到为止。 import java.util.Stack; // 图的邻接矩阵实现及深度优先
深度优先搜索DFS(Depth First Search) (一)深度优先搜索遍历类似于树的先根遍历,是树的先根遍历的
一、深度优先搜索框架一递归实现,流程如下: public void dfs(int v) { visited[v] = true; //访问起
图的遍历是指从图中的某一个顶点出发,按照某种搜索方法沿着图中的边对图中的所有顶点访问一次且仅
深度优先搜索(DFS:Depth-First Search)是一种图搜索策略,其将搜索限制到 2 种操作: (a) 访问图
深度优先搜索简述 深度优先搜索(depth-first search,简称dfs)就是递归地进行一系列操作,直到找到
深度优先搜索(dfs) 这几天在看深度优先搜索,把自己理解的深度的内容给整理一下。 深度优先搜索,
写在最前面的 两种图的遍历算法在其他图的算法当中都有应用,并且是基本的图论算法。 广度优先搜索
一、深度优先搜索 深度优先搜索就是在搜索树的每一层始终先只扩展一个子节点,不断地向纵深前进直到
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号