这样一道题:
1,2,2,3,4,5 这6个数,要输出它所有的组合,但4不能开头 ,3跟5不能在一起。请问怎么搞?? 

解决方案 »

  1.   

    哈哈,题目表述的意思不清楚啊可不可以只要一个数字?还是必须要6个数字?
    public class Test {
    public static void simpleMethod(int start,int end){
    for(int i=start;i<=end;i++){
    String temp =String.valueOf(i);
    if(!temp.matches("^3.*")&&!temp.matches(".*35.*")&&!temp.matches(".*53.*")){
    System.out.println(temp);
    }
    }
    } public static void main(String[] args) {
    //可以是一个数字
    simpleMethod(1,654321);
    //必须是6个数字
    simpleMethod(123456,654321);
    }}
    来个非主流的方法,投机取巧而已。
      

  2.   


    import java.util.Arrays;public class Test3 { public static void main(String[] args) {
    int count = 0;
    for(int i=122345; i<=543221; i++) {
    if(check(i)) {
    System.out.print(i + "  ");
    count ++;
    if(count%10 == 0)
    System.out.println();
    }
    }
    System.out.println("\n共" + count + "个数字符合要求");
    }

    public static boolean check(int num) {
    String str = Integer.toString(num);

    char[] arr = str.toCharArray(); 
    Arrays.sort(arr);
    int count = 0;
    for(int i=0; i<5; i++) {
    if(arr[i] == '2') {
    if(++count > 2)
    return false;
    } else if(arr[i] == arr[i+1]){
    return false;
    }
    } if (str.contains("0") || str.contains("6") || str.contains("7") || str.contains("8") || str.contains("9")
    || str.charAt(0) == '4' || str.contains("35") || str.contains("53")) {
    return false;
    }

    return true;
    }}
      

  3.   

    这么复杂的算法都可以想到。我还本来想用 一个 6 for 循环,在来做判断呢!高
      

  4.   

    在11楼的代码上改了一下check(int num)方法 private static boolean check(int i) {
    String value=String.valueOf(i);
    if(value.matches("^4.*|.*35.*|.*53.*")){
    return false;
    }
    return true;
    }