当前位置:编程学习 > JAVA >>

1,2,3,4,5,用java写一个程序,排出不同的排序,如:12345,34512...,要求3与5不能相连。

用冒泡排序不太对
答案:public class GroupTest {
    public static List<String> list = new ArrayList<String>();

    /**
     * 构造字符串的所有排序组合
     * 
     * @param str 将要组合成的字符
     * @param nstr 源字符串集
     */
    public static void group(String str, String nstr) {
        if (str.length() != nstr.length()) {
            String rest = getRest(str, nstr);
            for (int i = 0; i < rest.length(); i++) {
                String temp = str + rest.substring(i, i + 1);
                if (temp.indexOf("4") != 2 && temp.indexOf("35") == -1 && temp.indexOf("53") == -1) {// 过滤显示条件,如果去掉此处的判断,就是列出所有字符集的排列组合
                    System.out.println(temp);
                    if (!list.contains(temp)) {
                        list.add(temp);
                    }
                    group(temp, nstr);
                }
            }
        }
    }

    /**
     * 从源字符串集中去除将要组合成的字符
     * 
     * @param str 将要组合成的字符
     * @param nstr 源字符串集
     * @return 剩余字符串集
     */
    public static String getRest(String str, String nstr) {
        String rest = "";
        if (nstr.length() > str.length()) {
            rest = nstr;
            for (int i = 0; i < str.length(); i++) {
                rest = rest.replaceFirst(str.substring(i, i + 1), "");// 注意此处的replaceFirst,而不是replaceAll
            }
        }
        return rest;
    }

    public static void main(String[] args) {
        group("", "122345");
        System.out.println(list.toString());
    }
}
其他:前括号中个十百千万位均为1,2,3,4,5则
原式=(1+2+3+4+5)*(10000+1000+100+10+1)除以(1+2+3+4+5)
    =15*11111除以15
    =11111
 

上一个:java调用txt文件的路径问题
下一个:做java干什么的

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,