| 本帖最后由 吐槽星人 于 2015-7-22 19:49 编辑 
 思路把所有的组合弄出来,我的想法是通过随机数来获取排列,然后进行遍历判断并输出
 第一题
 
 第二题复制代码package itheima;
import java.util.Random;
import java.util.TreeSet;
/**
 * 15、用1、2、3、4这四个数字,用java写一个main函数
 *        打印出所有不同的排序,如:1234,1243等
 *        要求:“4”不能在第一位,“1”与“3”不能相连
 * @author Administrator
 *
 */
/*
 * 思路:利用随机数将不同的组合存入TreeSet。遍历TreeSet将符合条件的组合输出
 */
public class Test15 {
        public static void main(String[] args) {
                //用于换行
                int count =0;
                Random random=new Random();
                //用于记录随机数产生的组合
                StringBuilder sb=new StringBuilder();
                TreeSet<String> treeSet=new TreeSet<>();
                //4个数的排列有24种,A(n,m)=n!/(n-m)!
                while (treeSet.size()<24) {
                        //通过循环将不同随机数存入字符串缓冲区
                        while (sb.length()<4) {
                                //产生一个随机数
                                int num=random.nextInt(4)+1;
                                count1++;
                                //如果在字符串中找不到该随机数存入
                                if (sb.indexOf(""+num)==-1) {
                                        sb.append(""+num);
                                }
                        }
                        //System.out.println(sb.toString());
                        //将产生的随机数存入TreeSet
                        treeSet.add(sb.toString());
                        //清空缓存区
                        sb.delete(0, sb.length());
                        
                }
                //遍历TreeSet,通过条件判断输出组合
                for (String string : treeSet) {
                        if (!string.startsWith("4")&&!string.contains("13")&&!string.contains("31")) {
                                count++;
                                System.out.print(string+"  ");
                                if (count%7==0) {
                                        System.out.println();
                                }
                        }
                }
                System.out.println(count);
        }
        
}
 复制代码package itheima;
import java.util.Random;
import java.util.TreeSet;
/**
 *  题2:用1、2、2、3、4、5这六个数字,用java写一个main函数,
 *  打印出所有不同的排列,如:512234、412345等,
 *  要求:"4"不能在第三位,"3"和"5"不能相连
 * @author Administrator
 *
 */
public class Test20 {
        public static void main(String[] args) {
                //用于换行
                int count =0;
                //统计产生了多少个随机数
                //int count1=0;
                Random random=new Random();
                //用于记录随机数产生的组合
                StringBuilder sb=new StringBuilder();
                TreeSet<String> treeSet=new TreeSet<>();
                //这6个数的排列有360种,n!/2
                while (treeSet.size()<360) {
                        //通过循环将不同随机数存入字符串缓冲区
                        while (sb.length()<6) {
                                //产生一个随机数
                                int num=random.nextInt(6)+1;
                                //count1++;
                                //如果在字符串中找不到该随机数存入
                                if (sb.indexOf(""+num)==-1) {
                                        sb.append(""+num);
                                }
                        }
                        //System.out.println(sb.toString());
                        //将产生的随机数存入TreeSet
                        //for(int i=1;i<6;i++) {
                                String line =sb.toString();
                                treeSet.add(line.replace("6",""+2));
                        //}
                        //清空缓存区
                        sb.delete(0, sb.length());
                        
                }
                //遍历TreeSet,通过条件判断输出组合
                for (String string : treeSet) {
                        if ((string.charAt(2)!='4')&&!string.contains("35")&&!string.contains("53")) {
                                count++;
                                System.out.print(string+"  ");
                                if (count%7==0) {
                                        System.out.println();
                                }
                        }
                }
                //System.out.println(count1);
                System.out.println(count);
        }
}
 
 
 
 |