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++; } } } }}