读书人

122345这六个数字输出它所有可能的组

发布时间: 2012-10-25 10:58:57 作者: rapoo

122345这6个数字,输出它所有可能的组合;要求4不能在第3位,3和5不能相连。

/* *题目描述122345这6个数字,输出它所有可能的组合;要求4不能在第3位,3和5不能相连。输入描述无输出描述由6个数字组成的字符串,多个组合用回车分隔。输入样例无输出样例122345212345。。。 */package exam1;/** * * @author Administrator */public class Test4 {    public static void main(String[] args) {        Test4 test = new Test4();        test.com();    }    private int[] b = {1, 2, 2, 3, 4, 5};    private int result = 0;    private int tp = b.length;    private int used[] = {0, 0, 0, 0, 0, 0};    private void mark(int result) {        if (result / (int) Math.pow(10, b.length - 1) < 1) {            return;        }        if (result / 1000 % 10 == 4) {            return;        }        String str = result + "";        int n, m;        n = str.indexOf('3');        m = str.indexOf('5');        if (Math.abs(n - m) == 1) {            return;        }        System.out.println(result + "");    }    public void com() {        seal(tp);    }    private void make(int i, int a, int b, int dp) {        this.b[i] = 10 * a + b;        mark(this.b[i]);        seal(dp - 1);    }    private void seal(int dp) {        if (dp == 0) {            return;        }        for (int i = 0; i < b.length; i++) {            for (int j = 0; j < b.length; j++) {                if (i != j && used[i] + used[j] == 0) {                    used[j] = 1;                    tp--;                    int p = b[i], q = b[j];                    make(i, p, q, dp);                    b[i] = p;                    b[j] = q;                    used[j] = 0;                    tp++;                }            }        }    }}

读书人网 >编程

热点推荐