博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
全排列问题
阅读量:4079 次
发布时间:2019-05-25

本文共 696 字,大约阅读时间需要 2 分钟。

在解决全排列问题时,当数据规模不大时可以用枚举解决,一旦数据规模很大时(如1000000)这个时候用枚举显得不适合了,运行非常慢,就比如说我要得出1-9的全排列,那么用枚举去解决程序的复杂度O将会是9^9,这样就不合适用枚举了(当然不考虑运行时间的话可以用这个方法),这个时候用递归去实现就比较合适了。先上代码啦

用递归实现全排列

public class FullPermutation{

    public static void swap(char[] aa,int index1,int index2){

        char t = aa[index1];

        aa[index1] = aa[index2];

        aa[index2] = t;

}

    public static void f(char[] aa,int k){

        if(k==aa.length){//设置出口 

//可以在下面加入额外条件来对字符进行筛选 比如我想要得到首字符为9的全排列串

//那么只要写上if(aa[0]=='9')即可

            System.out.println(String.valueOf(aa));

            return;

}

        for(int i=k;i<aa.length;i++){

            swap(aa,i,k);//依次进行交换

            f(aa,k+1);

            swap(aa,i,k);//回溯,很重要,

    }

}

    public static void main(String args[]){

        f("123456789".toCharArray(),0);

}

}

递归能够解决的问题有很多,全排列是其中一种,还有博弈问题,迷宫等等。

转载地址:http://uhsni.baihongyu.com/

你可能感兴趣的文章
不建议在ARM平台上跑Gazebo仿真,也就是说TX2上这样弄不太好。所以也就意味着你想买一个小的板子既可以开发也可以仿真,就不建议用TX2了,应该是用X86平台好些,怪不得GAAS在那吐槽TX2
查看>>
同时装T265和光流的时候,应该是T265提供的位置信息,光流提供的速度信息,其实不冲突,一个位置环一个速度环,融合起来效果应该更好。
查看>>
我感觉互补滤波不就是一种融合么,把两个数据融合,你叫我融合两个数据我确实很可能就是用互补的方式
查看>>
扩展卡尔曼滤波定位是马尔可夫定位中的一种特殊情况(古月居)
查看>>
我自己已经写好而且编译0错误
查看>>
我现在知道为什么会有对天光流了,因为比赛场地地面全白。
查看>>
协议还有物理层/电气层的协议 RS232 RS485
查看>>
烧写之前备份过的树莓派镜像到SD卡,证明这样备份恢复是可行的!!!!!!!
查看>>
我在苍穹四轴买的F450的动力配置(包含基本组件)
查看>>
串口通信是需要共地的,所以你树莓派要和飞控串口通信还是得把树莓派弄到无人机的电池上供电才行,或者飞控通过电脑的USB供电。
查看>>
现在发现激光雷达和双目真正的融合没那么简单
查看>>
普通的激光雷达就可以是一个三维激光雷达,比如一个16线的激光雷达,它是上下正负30度往外扫,只是16线你选取1线就是一个平面,16线都考虑就是立体的了。
查看>>
阿木实验室的一些信息(包含一些wiki地址)
查看>>
NUC作为开发机不足的地方
查看>>
TB上看到迷你主机似乎都是酷睿的CPU
查看>>
英特尔处理器全部系列
查看>>
AGV小车
查看>>
基于ADRC的单点自平衡立方体, 我搜了下有人写过了,看来我这种写论文的思路是对的,把一个实现过的项目用其他方法实现一遍。
查看>>
吃透tensorflow那本书里面的LSTM那个程序
查看>>
今天初步装好了我的猛禽360机架
查看>>