本帖最后由 yaolv7 于 2016-5-15 14:08 编辑
- /**
- * method02 适用所有
- * */
- public static void method02() {
- Object[] arr = {1, 2, 3, 4};
- sort("", arr);
- }
- private static void sort(String str, Object[] arr) {
- if (arr.length == 1) {
- str = str + arr[0];
- // 排除不符合的
- if (! str.contains("13") && ! str.contains("31") && ! str.startsWith("4"))
- System.out.println(str);
- }
- for (int i = 0; i < arr.length; i++) {
- // 递归调用
- sort(str + arr[i], copy(arr, i));
- }
- }
- private static Object[] copy(Object[] arr, int index){
- Object[] tempArr = new Object[arr.length-1];
- System.arraycopy(arr, 0, tempArr, 0, index);
- System.arraycopy(arr, (index + 1), tempArr, index, (arr.length - index - 1));
- return tempArr;
- }
- /**
- * method01 只适用本题
- * */
- public static void method01() {
- for (int i = 1234; i <= 4321; i++) {
- String str = String.valueOf(i);
- // 跳过不符合的
- if (str.contains("13") || str.contains("31") || str.startsWith("4"))
- continue;
- char[] c = str.toCharArray();
- Arrays.sort(c);
- // 跳过这些数字之外的组合
- if (!String.valueOf(c).equals("1234"))
- continue;
- System.out.println(str);
- }
- }
复制代码 只能说黑马论坛太渣了,代码发上去都没了 |