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

深度优先搜索解组合问题(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

源码:
分享到:
评论

相关推荐

    Java编程艺术 PDF

    第6章 使用Java搜索Internet 158 6.1 Web搜索程序基础 159 6.2 遵守Robot协议 160 6.3 Search Crawler概述 161 6.4 SearchCrawler类 162 6.4.1 SearchCrawler类的变量 179 6.4.2 SearchCrawler类的构造函数 179 ...

    java 编程艺术

    第6章 使用Java搜索Internet 158 6.1 Web搜索程序基础 159 6.2 遵守Robot协议 160 6.3 Search Crawler概述 161 6.4 SearchCrawler类 162 6.4.1 SearchCrawler类的变量 179 6.4.2 SearchCrawler类的构造函数 ...

    matlab物价的波动代码-school_projects:罗切斯特理工学院Python,Java,Matlab,Promela和Alloy中

    在Java中使用深度搜索优先算法 投资(个人) 允许客户执行以下操作的程序: 开帐户 购买股票 卖出股票 显示您当前的投资组合 关闭您的帐户 经纪业务: 处理投资者的投资组合 使用比较器和可比函数显示投资者的投资...

    javalruleetcode-Coding:记录编码问题、解决方案、解释、测试用例等

    深度优先搜索(DFS) 1.1.1.7.2 广度优先搜索(BFS) 1.1.1.8 关键路径-AOV-网络 1.1.1.9 欧拉路径,汉密尔顿之旅 1.1.1.10 差异约束(Bellman-Ford) 1.1.1.11 二分匹配 1.1.1.12 网络流量 1.1.2 组合 1.1.3 排列 ...

    programmingteam:维拉诺瓦编程团队材料

    深度优先搜索最近对 组合优化 最小成本最大流量(C ++)最小成本匹配(C ++)最大二分匹配(C ++)全局最小切割(C ++) 几何学 凸包(C ++)其他几何(C ++)Java几何(Java)3D几何(Java)慢速Delaunay三角剖分...

    leetcode和oj-Data-structure-and-Algorithms:一些有趣的练习

    深度优先搜索 -路径总和-路径总和 II -路径总和 III - 验证二叉搜索树-二叉树预序遍历-二叉树中序遍历-二叉树后序遍历-二叉搜索树中的中序后继- 二叉搜索树迭代器-Sum Root to Leaf Numbers 广度优先搜索 -二叉树级...

    Teaching-HEIGVD-RES-2015-Labo-01:Java IO 实验室

    然后,应用程序遍历本地文件系统(深度优先)并对每个访问过的报价文件进行处理。 处理包括 1) 将所有字符转换为其大写值和 2) 在每行的开头添加一个行号(后跟一个制表符)。 这是通过组合FilterWriter类的子类来...

    leetcode

    147对链表进行插入排序去做148排序链表归并排序(TODO)回溯算法序号译文思路17电话号码的字母组合回溯之组合问题46全分回溯之排序问题77组合问题子串问题序号译文思路3无重复字串的最长字串滑动窗口5最长回文字串...

    javalruleetcode-Data-Structure-and-Algorithms:数据结构与算法

    广度/深度优先搜索,DP = 动态编程。 时间复杂度 视频编号1-16 评论:看完这 16 个视频后,我可以保证您肯定会掌握时间复杂度。 数据结构 评论:这是研究数据结构主题的最佳材料之一。 威廉在 Java 上实现了每一个。...

    leetcode分类-leetCode-Solutions:Python3中的LeetCode解决方案

    leetcode 分类LeetCodePy Python3 和 Java ...深度优先搜索 广度优先搜索 回溯 递归 动态规划 贪婪的 堆 两个指针 滑动窗口 数学 图形 组合 DFA 决定并征服 需要解决的问题 1437&gt;位操作1329&gt;对角线

    《算法》中文版,Robert Sedgewick,塞奇威克

    4.1.3 深度优先搜索 4.1.4 寻找路径 4.1.5 广度优先搜索 4.1.6 连通分量 4.1.7 符号图 4.1.8 总结 4.2 有向图 4.2.1 术语 4.2.2 有向图的数据类型 4.2.3 有向图中的可达性 4.2.4 环和有向无环图 4.2.5 ...

    数据挖掘18大算法实现以及其他相关经典DM算法

    主要用于关键信息的搜索,类似于在空间中的二分搜索,大大提高了搜索效率,在寻找目标元素时,使用了DFS深度优先的方式和回溯进行最近点的寻找。详细介绍链接 MS-Apriori 基于多支持度的Apriori算法。是Apriori...

    validnumberleetcode自动机-coderjia-to-architect:JiA同学的代码人生,各种优秀语言、框架、中间件、神

    深度优先广度优先(8) 设计模式 面向对象设计原则 开闭原则 里氏替换原则 依赖倒置原则 单一职责原则 接口隔离原则 迪米特法则 合成复用原则 创建模式 工厂方法模式 抽象工厂模式 单例模式 建造者模式 原型模式 ...

    高效算法:竞赛、应试与提高必修128例.[法] Christoph Dürr Jill-Jênn Vie(带书签文字版).pdf

    6 4 深度优先遍历:深度优先算法 69 6 5 广度优先遍历:广度优先算法 70 6 6 连通分量 71 6 7 双连通分量 74 6 8 拓扑排序 77 6 9 强连通分量 79 6 10 可满足性 84 第 7 章 图中的环 86 7 1 欧拉路径 86 7 2 中国...

    Sudoku:数独谜题求解器-最终项目

    回溯算法利用深度优先搜索解决任何数独难题。约束编程将基于约束模型的算法与回溯相结合的算法的优点是求解时间快,并且能够求解所有数独。面向对象编程类,方法和对象聚合与继承访问修饰符和字段字段和变量编程基础...

    算法,4th,塞奇威克 (Robert Sedgewick)韦恩 (Kevin Wayne), 谢路云 译.azw3

    4.1.3 深度优先搜索 4.1.4 寻找路径 4.1.5 广度优先搜索 4.1.6 连通分量 4.1.7 符号图 4.1.8 总结 4.2 有向图 4.2.1 术语 4.2.2 有向图的数据类型 4.2.3 有向图中的可达性 4.2.4 环和有向无环图 4.2.5 有...

    PuzzleSolver:解决任意拼贴难题的程序

    解谜游戏 该项目的目标是实施一个程序,该程序将解决任意平铺... 为了进一步优化算法,避免出现死角和不可行的选择,我们采用算法X(针对确切的覆盖问题的递归式不确定性深度优先搜索和回溯算法)和跳舞链接进行搜索。

    mxd-scroll-V2-server:冒险岛卷轴推算辅助网站(前分离分离+分布式服务)的替换工程

    冒险岛卷轴组合计算网站逐步 模块 scroll-server-calculate-service卷轴计算服务...深度优先搜索; 两次剪枝(因为全选卷轴计算时计算量可达15的15次方左右,计算量穿透,故要做剪枝和同步转异步)。 ##网站 ##前端

    leetcode力扣是什么-LeetCode:LeetCode练习

    算法求解,对其进行深度优先遍历。对于回溯算法应该弄明白三点: 怎么前进(进入下一状态) 怎么回退(回到上一个状态) 什么时候停止 其中比较重要的是:采取何种方式处理好状态的前进和回退。在本题中,在前进时,...

Global site tag (gtag.js) - Google Analytics