`
128kj
  • 浏览: 604105 次
  • 来自: ...
社区版块
存档分类
最新评论

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

阅读更多
题:输出从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

源码:
分享到:
评论

相关推荐

    TSP问题的深度优先的java算法

    深度优先搜索在解决TSP问题时提供了一种基础的方法,但实际应用中往往需要结合其他优化策略。在Java中实现TSP问题的DFS算法,需要理解图的表示、递归或栈的使用以及如何存储和比较路径。由于TSP的复杂性,理解并优化...

    有界深度优先算法八数码问题.rar_java 八数码 深度_八数码_八数码 Java_八数码深度_深度优先算法

    有界深度优先搜索(Bounded Depth-First Search, BDFS)是一种在图或树结构中寻找路径或解的算法,通常用于解决有限空间的问题,如八数码问题。八数码问题,又称滑动拼图游戏,是经典的组合优化问题,玩家需要通过...

    蓝桥杯深度优先搜索

    深度优先搜索(Depth-First Search, DFS)是一种用于遍历或搜索树或图的算法,它的基本思想是尽可能深地探索图的分支。在遇到死胡同时,算法会回溯到上一步,尝试其他可能的路径。DFS在解决许多算法问题中发挥着重要...

    【计算智能】用深度优先搜索求解分油问题

    在这个场景中,我们将关注一种基于计算智能的问题解决方法——深度优先搜索(DFS,Depth-First Search),并将其应用于“分油问题”。 深度优先搜索是一种图遍历算法,常用于解决树形结构或图结构中的问题。在搜索...

    Java经典算法(通用搜索算法及实现)

    综上所述,Java经典算法在解决组合问题和优化问题时,通过状态空间树的搜索策略,如深度优先搜索和启发式搜索,可以有效地找到解。N皇后问题和点着色问题的实例展示了这些算法在实际问题中的应用。理解和熟练掌握...

    Java 解速算24 正解集合

    一种常见的方法是采用深度优先搜索(DFS,Depth-First Search)或广度优先搜索(BFS,Breadth-First Search)。这两种搜索策略都是图论中的基本概念,用于遍历或搜索树或图。 对于"速算24"问题,我们可以将每个数字...

    组合数学中的生成排列算法java代码

    总之,这个Java程序结合了组合数学的排列概念和递归算法,通过深度优先搜索策略生成排列,并可能提供用户友好的界面展示。理解和掌握这些知识对于提升编程能力,特别是在算法设计和问题求解方面,有着显著的帮助。

    经典算法问题的java实现<一>

    4. **图算法**:如深度优先搜索(DFS)和广度优先搜索(BFS),这些算法常用于解决网络问题,例如寻找最短路径或检测环。 5. **动态规划**:如背包问题、最长公共子序列(LCS)和斐波那契数列的优化解决方案。动态...

    算法分析Java代码

    **分支限界法** 是一种搜索算法,它结合了回溯法的深度优先搜索和剪枝策略,用于寻找全局最优解。分支限界法通常应用于旅行商问题、作业调度等优化问题。在Java中,通常使用队列(如PriorityQueue)作为限界集来控制...

    分支限界算法之0-1背包问题和单源最短路径问题java源程序参考.pdf

    分支限界法是一种用于求解最优化问题的搜索算法,它通过广度优先或深度优先的方式遍历问题的解空间树,同时在搜索过程中不断剪枝,排除不可能产生最优解的分支,从而有效地找到最优解。这种算法常用于解决如旅行商...

    java_图形化界面-流水作业最优调度问题以及棋盘覆盖问题源码整理

    这是一个典型的回溯法或深度优先搜索(DFS)的应用场景。在Java中,我们可以通过创建二维数组表示棋盘,然后递归地尝试放置皇后并检查冲突来实现。源码可能会展示如何设计这种递归逻辑,以及如何有效地剪枝以减少...

    HDU题目java实现

    8. **图论与树**:HDU题目中可能涉及图的遍历(深度优先搜索DFS、广度优先搜索BFS)、树的遍历(前序、中序、后序)以及最小生成树、最短路径等算法。 9. **动态规划**:这是一种优化策略,通过构建状态转移方程来...

    java算法大全(含源码包)

    4. **图算法**:包括深度优先搜索(DFS)、广度优先搜索(BFS)、最短路径算法(如Dijkstra算法、Floyd算法)以及最小生成树算法(如Prim算法、Kruskal算法)等,这些在解决网络问题、社交网络分析等领域有着广泛...

    Tromino-用java解决

    解决这个问题通常涉及搜索算法,如深度优先搜索(DFS)或广度优先搜索(BFS),以及回溯法来尝试不同的放置方式并检查是否能成功覆盖整个区域。 【标签】:“L瓦问题”是本问题的核心,它是一个经典的数学谜题,也...

    传教士与野人问题Java实现

    通常,这个问题会用到搜索算法,如深度优先搜索(DFS)或广度优先搜索(BFS)。这些算法会遍历所有可能的传教士和野人组合,直到找到一个安全的解决方案。在Java代码中,可能会定义两个整型变量`n`和`k`,分别表示...

    java算法设计资料

    3. **搜索算法**:包括线性搜索、二分搜索、深度优先搜索(DFS)、广度优先搜索(BFS)等。这些搜索算法在解决查找问题时非常有用,例如在图或树结构中寻找特定节点。 4. **图算法**:Dijkstra最短路径算法、Floyd-...

    java经典算法案例

    2. 搜索算法:搜索算法是编程中常见的一种问题解决方式,包括线性搜索、二分查找、深度优先搜索(DFS)和广度优先搜索(BFS)等。了解它们的特点和应用场景,可以帮助我们更有效地在数据结构中查找目标元素。 3. ...

    java_shujujiegou_suanfa.rar_Java数据结构

    9. 搜索算法:如二分查找、深度优先搜索、广度优先搜索等,是解决复杂问题的基础。 10. 字符串处理:Java中的`String`类提供了丰富的字符串操作方法,如拼接、查找、替换等。 在算法部分,通常会涵盖以下内容: 1...

Global site tag (gtag.js) - Google Analytics