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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

题目:写一个方法输出所有的1234四个数的排序组合
         要求:13不能在一起且不能以4开头


11 个回复

倒序浏览
要是换成 abcd  , 还能这样做么?{:2_40:}
回复 使用道具 举报
我来膜拜大神
回复 使用道具 举报
加入用HashSet不知道怎么样?set是无序的不重复的。不知道遍历许多次会不会出现重复的。
回复 使用道具 举报
本帖最后由 pal_xie 于 2016-5-14 22:26 编辑
  1. public static void main(String[] args) {
  2.                 for (int a = 1; a < 4; a++) {
  3.                         for (int b = 1; b < 5; b++) {
  4.                                 for (int c = 1; c < 5; c++) {
  5.                                         for (int d = 1; d < 5; d++) {
  6.                                                 String s = "" + a + b + c + d;
  7.                                                 if (s.contains("13") || s.contains("31")) {
  8.                                                         continue;
  9.                                                 } else {
  10.                                                         System.out.println(s);
  11.                                                 }
  12.                                                 
  13.                                         }
  14.                                 }
  15.                         }
  16.                 }
  17.         }
复制代码
想到思路,2分钟就敲出来了
回复 使用道具 举报
pal_xie 发表于 2016-5-14 22:25
想到思路,2分钟就敲出来了

你的结果有重复的奥

QQ截图20160515212446.png (8.05 KB, 下载次数: 6)

QQ截图20160515212446.png
回复 使用道具 举报
罗勇 中级黑马 2016-5-15 21:28:42
7#
lizejun111 发表于 2016-5-14 22:06
加入用HashSet不知道怎么样?set是无序的不重复的。不知道遍历许多次会不会出现重复的。 ...

这个我也不清楚奥,大神给实验下呗
回复 使用道具 举报
罗勇 发表于 2016-5-15 21:25
你的结果有重复的奥

是一个数只能用一次是吗   我还以为只是不能相邻
那在里里面在加个判断就好   a ==b || a==c || a==d||b==c||b==d||c==d
貌似太长了
回复 使用道具 举报
罗勇 发表于 2016-5-15 21:28
这个我也不清楚奥,大神给实验下呗

加set这个也可以   不过和加几个相等的判断代码数也差不多
  1. for (int a = 1; a < 4; a++) {
  2.                         for (int b = 1; b < 5; b++) {
  3.                                 for (int c = 1; c < 5; c++) {
  4.                                         for (int d = 1; d < 5; d++) {
  5.                                                 String s = "" + a + b + c + d;
  6.                                                 HashSet<Integer> hs = new HashSet<Integer>();
  7.                                                 hs.add(a);
  8.                                                 hs.add(b);
  9.                                                 hs.add(c);
  10.                                                 hs.add(d);
  11.                                                 if (s.contains("13") || s.contains("31") || hs.size() != 4) {
  12.                                                         continue;
  13.                                                 } else {
  14.                                                         System.out.println(s);
  15.                                                 }
  16.                                                
  17.                                         }
  18.                                 }
  19.                         }
  20.                 }
复制代码
回复 使用道具 举报
pal_xie 发表于 2016-5-15 22:14
加set这个也可以   不过和加几个相等的判断代码数也差不多

嗯嗯,大神你马上就25技术分了啊,告诉我怎么加技术分啊,好难啊
回复 使用道具 举报
罗勇 发表于 2016-5-15 22:42
嗯嗯,大神你马上就25技术分了啊,告诉我怎么加技术分啊,好难啊

还有一个  新手入学攻略里   有回帖奖励的全部回了,每天发帖回帖要注意质量,不要太水了
回复 使用道具 举报
pal_xie 发表于 2016-5-15 23:01
还有一个  新手入学攻略里   有回帖奖励的全部回了,每天发帖回帖要注意质量,不要太水了 ...

懂了,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马