`
lighter
  • 浏览: 495121 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

一道算法题目,值得一看

阅读更多
算法程序题:

该公司笔试题就1个,要求在10分钟内作完。

题目如下:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。


下面的代码是网上的一位老兄写的,值得参考一下:

上面的程序还可以改进一下的,各位有时间可以想一想.


 

  1. import java.util.Iterator;   
  2. import java.util.TreeSet;   
  3.   
  4. public class TestQuestion {   
  5.   
  6. private String[] b = new String[]{"1""2""2""3""4""5"};   
  7. private int n = b.length;   
  8. private boolean[] visited = new boolean[n];   
  9. private int[][] a = new int[n][n];   
  10. private String result = "";   
  11. private TreeSet set = new TreeSet();   
  12.   
  13. public static void main(String[] args) {   
  14. new TestQuestion().start();   
  15. }   
  16.   
  17. private void start() {   
  18.   
  19. // Initial the map a[][]   
  20. for (int i = 0; i < n; i++) {   
  21. for (int j = 0; j < n; j++) {   
  22. if (i == j) {   
  23. a[i][j] = 0;   
  24. else {   
  25. a[i][j] = 1;   
  26. }   
  27. }   
  28. }   
  29.   
  30. // 3 and 5 can not be the neighbor.   
  31. a[3][5] = 0;   
  32. a[5][3] = 0;   
  33.   
  34. // Begin to depth search.   
  35. for (int i = 0; i < n; i++) {   
  36. this.depthFirstSearch(i);   
  37. }   
  38.   
  39. // Print result treeset.   
  40. Iterator it = set.iterator();   
  41. while (it.hasNext()) {   
  42. String string = (String) it.next();   
  43. // "4" can not be the third position.   
  44. if (string.indexOf("4") != 2) {   
  45. System.out.println(string);   
  46. }   
  47. }   
  48. }   
  49.   
  50. private void depthFirstSearch(int startIndex) {   
  51. visited[startIndex] = true;   
  52. result = result + b[startIndex];   
  53. if (result.length() == n) {   
  54. // Filt the duplicate value.   
  55. set.add(result);   
  56. }   
  57. for(int j = 0; j < n; j++) {   
  58. if (a[startIndex][j] == 1 && visited[j] == false) {   
  59. depthFirstSearch(j);   
  60. else {   
  61. continue;   
  62. }   
  63. }   
  64.   
  65. // restore the result value and visited value after listing a node.   
  66. result = result.substring(0, result.length() -1);   
  67. visited[startIndex] = false;   
  68. }   
  69. }   
分享到:
评论
1 楼 yushui2000 2012-06-13  
突然想到一种方法,就是1、2、2、3、4、5作为5个球(类似彩票),每次随机抽取,然后将结果存入数据库,由于5个球最大排列方式为P6,6*5*4*3*2*1=720,理论上说,只要我抽取的次数够多,那么所有排列顺序都能抽出来,所以,如果我模拟抽取10万次左右,通过检索SQL,distinct一下,就能得到所以顺序了,为保险起见,可以多执行几次,保证数据的正确。所谓极小概率+极小概率=不可能

突然脑子抽了下风,见笑了

相关推荐

    基础算法题目精简集合

    前六章均为算法基础入门必会解答的题目,也就是若当中有任何一题, 您无法给出正确解答,就不算有算法基础(带星的题目例外), 并且这里不提供基础题解答,若你实在需要,请自行查资料或者找人帮你。 下文假定阅读...

    PTA-数据结构与算法题目集.zip

    PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 ...

    JAVA经典算法题目

    JAVA经典算法题目,非常好的算法,实用,学习、面试起很大的作用。

    算法设计题集_算法题目_

    从入门到进阶版的算法题目,有多种解法详细说明;

    python算法趣味题目

    python算法趣味题目.doc

    动态规划算法经典题目

    几道动态规划的经典算法 非常经典 值得分享

    一道题目的算法优化过程

    一道题目的算法优化过程 作者很详细的分析了算法的优化过程。

    JAVA算法编程题目及答案.doc

    java算法编程题目及答案50道

    算法题目集锦.pdf

    算法题目集锦.pdf 讲算法的, 看看吧, 不错的资料

    PTA数据结构与算法题目集部分题解,补充blog创建前的题解.zip

    PTA数据结构与算法题目集部分题解,补充blog创建前的题解 PTA数据结构与算法题目集部分题解,补充blog创建前的题解 PTA数据结构与算法题目集部分题解,补充blog创建前的题解 PTA数据结构与算法题目集部分题解,补充...

    acm算法题目

    acm算法题目,帮助我们提高算法的思想,有助于我们在算法竞赛中取得优异的成绩。

    C++算法题目仓库.zip

    C++算法题目仓库.zip是一个包含C++算法题目和解答的压缩文件。该资源可以帮助学习C++的学生和开发者提高算法和编程能力,通过练习这些题目来加深对C++语言和算法的理解。 内容概要: 该压缩文件包含多个C++算法题目...

    各个大厂算法题目大全

    国外总结的算法题目,很有深度,没事儿的可以深入研究一下,成为世界级大佬指日可待

    经典算法题目

    经典算法题目采用java做的很少的,大部分都是c的!

    博客经典算法题目及思路解法总结ppt

    我博客中文章经典算法题目及思路解法总结的ppt,博客中的每个问题都在ppt中有详细的讲解,通过掌握这些算法,可以提高你的思维能力。

    经典算法题目与答案-含代码

    多个经典算法题目,包含java,c++,python解题代码,是您面试,软考的必备书籍。

    c++ 经典算法题目

    c++ 经典 算法 程序 这是我们学校内部的资料,很完整的,循序渐进的学习c++编程是很有帮助的。

    数据结构与算法课程设计题目汇编

    数据结构与算法课程设计题目汇编 1.Skip List的实现及分析 (1) 问题描述 Skip List作为有序链表结构的一种扩展,如下图所示,其中a是普通的单链表; 而b是在次基础上加上第二层(level 2)的额外指针,这些额外...

Global site tag (gtag.js) - Google Analytics