A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zbgl 中级黑马   /  2013-11-18 23:47  /  1592 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

要求用java语言编写程序,输出数字1,2,2,3,4,5的所有可能的排列组合,而且4不能在第三位,3和5不能相邻,例如122345是正确的,12435是错误的。哪位大神给点提醒?算法题真麻烦

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 淡定,这事还不用所谓的来解决!.

查看全部评分

2 个回复

倒序浏览
  1. package testWork;  

  2. public class Test1  
  3. {  
  4.     private int[] numbers = new int[] {1, 2, 3, 3, 4, 5};  
  5.       
  6.     public int n;  
  7.       
  8.     private String lastResult = "";  
  9.       
  10.     private boolean validate(String s)  
  11.     {  
  12.         if (s.compareTo(lastResult) <= 0) //按字典顺序比较两个字符串。  
  13.         {  
  14.             return false;  
  15.         }  
  16.         if (s.charAt(2) == '4')//"4"不能在第三位  
  17.         {  
  18.             return false;  
  19.         }  
  20.         if (s.indexOf("35") >= 0 || s.indexOf("53") >= 0)//"3"与"5"不能相连  
  21.         {  
  22.             return false;  
  23.         }  
  24.         return true;  
  25.     }  
  26.    


  27.     public void list(String index, String result)  
  28.     {  
  29.         for (int i = 0; i < numbers.length; i++)  
  30.         {  
  31.             if (index.indexOf(i+48) < 0)  
  32.             {  
  33.                 String s = result + String.valueOf(numbers[i]);  
  34.                 if (s.length() == numbers.length)  
  35.                 {  
  36.                     if (validate(s))  
  37.                     {  
  38.                         System.out.println(s);  
  39.                         lastResult = s;  
  40.                         n++;  
  41.                     }  
  42.                     break;  
  43.                 }  
  44.                 list(index + String.valueOf(i), s);  
  45.             }  
  46.         }  
  47.     }  

  48.      
  49.     public static void main(String[] args)  
  50.     {  
  51.         Test1 t = new Test1();  
  52.         t.list("", "");  
  53.         System.out.println("总数:" + t.n);  
  54.     }  
  55. }  
复制代码

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 有进步,但没有自己的解释与总结,.

查看全部评分

回复 使用道具 举报
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马