`
lighter
  • 浏览: 500904 次
  • 性别: 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一下,就能得到所以顺序了,为保险起见,可以多执行几次,保证数据的正确。所谓极小概率+极小概率=不可能

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

相关推荐

    JAVA零基础算法练习题

    在编程世界中,Java是一种广泛使用的面向对象的编程语言,尤其在企业级应用、服务器端开发和大数据处理等...因此,"JAVA零基础算法练习题"是一个非常好的学习资源,值得每一位Java初学者投入时间和精力去挑战和掌握。

    python 算法练习题共1000多页适合新手学习

    这一章节是整个文档的核心内容,包含了大量LeetCode上的经典算法题目及解答。从简单的两数之和(Two Sum)到复杂的N皇后问题(N-Queens),涵盖了LeetCode上各种难度级别的题目。每道题目都附带了详细的解题思路和Python...

    POPSTAR题目

    以一道具体的例子来说,一个初级(红色)题目可能是一个简单的数组处理问题,要求选手实现一个基本的排序算法,比如冒泡排序或插入排序。这个问题的关键在于理解和应用基本的数组操作以及循环控制结构。而一个高级...

    wustl的算法作业和答案,对理解算法的证明很有帮助

    每一道题目的解答过程都是一次思维的锻炼,每一次证明都是对算法原理的巩固。对于有志于提升算法水平的同学,这份资料无疑提供了丰富的学习素材和思考机会。同时,参考答案可以帮助我们检查自己的解题思路,找出不足...

    Algorithms 算法概论

    特别值得一提的是,它受到那些偏好英文原版教材的学生们的青睐,这无疑为他们提供了一个既原汁原味又内容充实的学习资源。 在深入探讨算法的世界之前,让我们首先明确算法的定义。算法是一组定义明确的操作步骤,...

    算法练习题

    每一道算法练习题都是对编程思维的锻炼,通过解决这些题目,你可以加深对数据结构的理解,提升分析问题和解决问题的能力。不断实践和反思,你将能够编写出更高效、更优雅的代码,成为一名出色的程序员。因此,无论是...

    编程之法:面试和算法心得

    此外,《编程之法:面试和算法心得》每一章都有“举一反三”和“习题”,以便读者及时运用所学的方法解决相似的问题,且在附录中收录了语言、链表、概率等其他题型。书中的每一道题都是面试的高频题目,反复出现在...

    明算理、知算法——“一个数除以分数”课后反思.doc

    二是如何更有效地安排练习时间,确保每一道题目都能得到充分的讨论和解答。这些问题反映了作者对于教学质量和效率的持续关注,也是每一位教育工作者都应该思考的问题。 总之,“明算理、知算法——‘一个数除以分数...

    2020年电子设计大赛题目

    例如,可能会有一道题目要求设计一个基于微控制器的智能控制系统,这将涉及到编程、传感器接口、数据处理和通信协议等多个方面。 2020年的题目可能包括以下类别: 1. **硬件设计**:比如设计一款低功耗的无线...

    北大值得做的50acm道题

    “北大值得做的50ACM道题”这一标题明确指出这是一份针对北京大学计算机科学领域学生或者对算法竞赛感兴趣的群体所推荐的50道经典题目列表。ACM(Association for Computing Machinery)在此处特指ACM国际大学生程序...

    新鲜出炉:微软等数据结构+算法面试100题第81-100题[V0.1版最后20题]

    - **目的**: 分享微软及其他知名IT公司面试中常见的数据结构与算法题目,旨在帮助求职者准备面试。 - **系列特点**: 持续更新和优化,旨在提供高质量的学习资源。 #### 3. 第81-100题的介绍 - 这些题目是系列的最后...

    各个大的IT公司笔试真题汇总,值得一看.doc

    IT公司的笔试是求职者在进入IT行业前必须跨越的一道门槛,这些公司的笔试题目往往涵盖了广泛的技术领域,旨在考察候选人的基础知识、编程能力、逻辑思维和问题解决技巧。以下是一些主要IT公司笔试题目的常见知识点:...

    ACM软件大赛之编程大赛题目附部分答案.doc

    值得注意的是,第一阶段不能参考任何资料,而第二阶段则允许携带书籍、手册等参考资料,但禁止携带任何形式的电子媒介资料。 参赛者可以自由选择编程语言,如C、C++或JAVA等。对于大一和大二的学生,比赛设有特殊...

    信息学奥赛普及组洛谷适合刷的题.pdf

    本文件中提及的洛谷适合刷的题目,包括了几个典型的题目及其解决方案,这些题目覆盖了基础算法、数据结构和编程技巧,对于准备信息学竞赛的学生来说非常重要。 P1001 A+B Problem 题目要求输入两个整数a和b,并输出...

    Algorithms-JS:LeetCode算法题的JS解法:pencil::ledger: + 平时遇到的算法题、手写题汇总:green_book::blue_book::orange_book::books:

    LeetCode作为一款热门的在线编程平台,提供了丰富的算法题目,覆盖了数据结构、排序、搜索、图论等多个领域,对于提升程序员的逻辑思维和问题解决能力具有极大的帮助。 项目中的每一道题目都提供了详细的JavaScript...

    数据结构北大上机实践考试试题5.1

    - **Prim 算法**:虽然题目没有明确指出使用哪种算法,但从代码实现来看,实际上采用了 Prim 算法的变种来寻找最小生成树。Prim 算法的基本思想是从任意一个顶点出发,不断地选择距离当前已选顶点集合最近的一个顶点...

    一些超级经典的C语言编程题目

    一道典型的题目可能要求从文件中读取数据并进行处理,然后将结果写回文件。 5. **结构体与联合体**:结构体允许我们创建自定义的数据类型,而联合体则可以在同一内存空间中存储不同类型的变量。通过设计和实现涉及...

    蓝桥杯真题

    举例来说,“第七届蓝桥杯省赛”真题可能包含了字符串处理的算法题目,如KMP算法、字典树(Trie)的实现。同时,也包含了一些递归和回溯算法的题目,如八皇后问题,这些问题要求参赛者能够灵活运用递归思想来解决...

    DnuiOJ_oj题库_大连东软信息学院_打包文件_大连东软oj_DnuiOJ_

    这些OJ题目涵盖了不同的编程领域,可能包括算法设计、数据结构、操作系统、网络、数据库等。通过解决这些题目,学习者可以深入理解编程概念,提高编码效率,同时还能锻炼逻辑思维和问题分析能力。对于计算机科学的...

    微软 2015 校园招聘 笔试题.rar

    首先,第一题“Farthest Point”是一道典型的算法问题,题目要求应聘者找到一组数据中两点之间的最大距离。这类问题通常出现在图论中,尤其是在处理具有距离限制的图时。应聘者需要熟悉多种图的算法,例如Dijkstra...

Global site tag (gtag.js) - Google Analytics