黑马程序员技术交流社区

标题: 关于一个数字排序问题,困扰好久了,求大神解答 [打印本页]

作者: 武汉的黑马王子    时间: 2016-4-17 20:49
标题: 关于一个数字排序问题,困扰好久了,求大神解答
用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求: "4 "不能在第三位, "3 "与 "5 "不能相连

作者: aweilovemusic    时间: 2016-4-17 20:49
package com.heima.test;

import java.util.Set;
import java.util.TreeSet;

public class MyTest {

    public static TreeSet<String> set = new TreeSet<String>();//注意这里可以自动消除重复

    public static void perm(char[] n, int beg, int end) {//对第几位到第一位的数进行排序
        if (beg == end) {//如果只是对某一位进行排序,则直接返回
            addNumber(String.valueOf(n));
        } else {
            for (int i = beg; i <= end; ++i) {
                swap(n, beg, i);
                perm(n, beg + 1, end);
                swap(n, beg, i);
            }
        }
    }

    public static void swap(char[] n, int x, int y) {//如果数组n中,第x,y位的数字不同,交换位置,否者直接返回
        if (x == y || n[x] == n[y]) {
            return;
        }
        char temp = n[x];
        n[x] = n[y];
        n[y] = temp;
    }

    public static void addNumber(String str) {//将符合条件的放在set里面
        if (str.charAt(2) == '4' || str.contains("35") || str.contains("53")) {
            return;
        }
        set.add(str);
    }

    public static void main(String args[]) {
        char[] number = new char[] { '1', '2', '2', '3', '4', '5','6' };
        perm(number, 0, number.length - 1);
        System.out.println(set.size());
        int cols = 10;
        for (String s : set) {
            System.out.print(s + " ");
            if (cols-- == 1) {
                System.out.println();
                cols = 10;
            }
        }
    }
}
对于字符同样适用addNumber的条件改一下就行。。。。
作者: 钱金磊    时间: 2016-4-17 22:34
用方法吧
作者: liudh1    时间: 2016-4-18 23:32
1.定义一个HashSet集合:储存这6个数字;
作者: liudh1    时间: 2016-4-18 23:38

1.定义一个HashSet集合:储存这6个数字;应为hashset是无序的,所以每次遍历都是不一样的
2.用无限循环while(true)进行遍历,把遍历的数添加到StringBuffer中,然后toString转换为字符串,然后判断.
3.通过索引判断第三位,然后循环subString判断连续两位是不是35,如果都不是,就打印该字符串
4,每次执行都不一样;自己可以琢磨一下.

作者: LiuLiu006    时间: 2016-4-18 23:47
六合彩33333333333333




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2