java代码解决数字排列问题

问题描述

java代码解决数字排列问题

从0,1,2,3中任意选出一个,有15组这样(0,1,2,,3)的数字,从每一组中找一个组成一个15位数字
现在已知道答案为4^15(4的15次方),我现在想得到所有的组合,请教各位大神

解决方案

lz使用递归,不要用15层循环

解决方案二:

以前用到过的一个排列组合方法,很快,供参考:

 public static void permutation(String[] str, int first, int end) {
        // 输出str[first..end]的所有排列方式
        if (first == end) { // 输出一个排列方式
            for (int j = 0; j <= end; j++) {
                System.out.print(str[j]);
            }
            System.out.println();
        }

        for (int i = first; i <= end; i++) {
            swap(str, i, first);
            permutation(str, first + 1, end); // 固定好当前一位,继续排列后面的
            swap(str, i, first);
        }
    }

    private static void swap(String[] str, int i, int first) {
        String tmp;
        tmp = str[first];
        str[first] = str[i];
        str[i] = tmp;
    }

解决方案三:

 public class Test{

    public static int dataNum;
    public static int arry[],  num[];
    public static int end = 15;

    public static void main(String[] args)  {

        arry = new int[15];
        num = new int[end];
        dataNum = arry.length;
        for(int i = 0; i < 15; i++)
            arry[i] = i ;
        getResult(num, 0, end);
    }

    public static void getResult(int[] num, int step, int end){
        int j;
        if(step == end){
             for (j = 0; j < end; j++) {
                    System.out.print(num[j]);
                }
                System.out.println();
        }else{
            for(j = 0; j < dataNum; j++){
                if(step == 0 && arry[j] == 0) continue;
                else{
                    num[step] = arry[j];
                    getResult(num, step + 1, end);
                }
            }
        }
    }
}
时间: 2024-11-05 18:28:23

java代码解决数字排列问题的相关文章

基于Java代码实现数字在数组中出现次数超过一半_java

下文通过几种方法给大家介绍java数组数字出现次数,具体内容如下所示: 方法一: 数组排序,然后中间值肯定是要查找的值. 排序最小的时间复杂度(快速排序)O(NlogN),加上遍历. 方法二: 使用散列表的方式,也就是统计每个数组出现的次数,输出出现次数大于数组长度的数字. 方法三: 出现的次数超过数组长度的一半,表明这个数字出现的次数比其他数出现的次数的总和还多. 考虑每次删除两个不同的数,那么在剩下的数中,出现的次数仍然超过总数的一般,不断重复该过程,排除掉其他的数,最终找到那个出现次数超过

java代码实现dmp导入文件路径存在空格如何解决

问题描述 java代码实现dmp导入文件路径存在空格如何解决 使用java调用Runtime.getRuntime().exec() 时,当导入文件路径存在空格时会提示无法打开指定路径的文件,而且提示的路径是以原有路径的空格分割的?应该如何解决空格问题?求教导 解决方案 打开的文件路径上不要有空格.

java代码中邮箱被转义问题“@”被转义为”%40”怎么解决?

问题描述 java代码中邮箱被转义问题"@"被转义为"%40"怎么解决?eg:zhaoxiaofnag%40eims.com.cn正常邮箱应该是:zhaoxiaofnag@eims.com.cn求大神解救,尝试了许多方法都没解决.. 解决方案 String s = "zhaoxiaofnag%40eims.com.cn ";s=URLDecoder.decode(s,"utf-8");System.out.println(s)

一段java代码在myeclipse中输出的是乱码,求解决办法

问题描述 以下JAVA代码运行后,会输出乱码.然而,将http://www.1soccer.com/oddsindex/index/换成http://www.310win.com/info/match/Zucai.aspx?typeID=1&issueNum=2015027,输出却正常.以上网页的代码都是UTF-8的.求解决办法.谢谢.importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamR

java代码测试http协议505错误的解决方法

代码功能:通过java代码获取网页源代码: 所用工具:Myclipse8.5+tomcat6.0+浏览器 系统环境:windows xp旗舰版 火狐浏览器版本: IE浏览器版本:

谁可以帮忙解决一下-java 代码实现微信收发消息

问题描述 java 代码实现微信收发消息 用java代码 实现微信消息的收发的代码具体实现,求解代码. 其过程如果有详尽的注解更好.

JAVA代码编写的30条建议

JAVA代码编写的30条建议 (1) 类名首字母应该大写.字段.方法以及对象(句柄)的首字母应小写.对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母.例如: ThisIsAClassName thisIsMethodOrFieldName 若在定义中出现了常数初始化字符,则大写static final基本类型标识符中的所有字母.这样便可标志出它们属于编译期的常数. Java包(Package)属于一种特殊情况:它们全都是小写字母,即便中间的单词亦是如此.对于域名扩展名称

诊断Java代码: 消除包间的耦合关联

测试优先编程(test-first programming)中反复遇到的一个问题是,似乎不可能对程序的许多部分进行自动测试.尤其当程序在很大程度上要利用外部资源和库时,似乎很难对它进行测试,因为没有很好的方法来模拟程序与这些外部资源的连接. 然而,虽然只使用 Java 代码很难测试这样的程序,但有一种类型的编程(带有开发工具)可以解决这个问题 ― 基于组件的编程. 基于组件的编程和 Java 语言 我所说的基于组件的编程是指什么?我只是指,编程时程序的各个单元处于分布状态,而不是象 JavaBe

java c# sign-签名算法,java代码转为 C#

问题描述 签名算法,java代码转为 C# 请帮忙把如下的java签名算法转换为c#的,牛人伸手啊!! 具体代码如下: public static String genSignature(String sk, String stringToSign) { String signature = ""; try { String encodedSign = URLEncoder.encode(stringToSign, ENCODING); try { Mac mac = Mac.getI