
正文
递归java全排列代码,java全排列递归算法
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
不重复的全排列问题,用递归实现。。。
请看下面的代码,在你的代码上做了稍许修改。修改的地方加上了注释 // Add。现在测试下来,可以实现不重复的全排序了。例如输入122,将得到 122 212 221 你可以再用1223, 1112233, 1122333等字符串来测试。
组合 :每个字符在一个组合可出现也可不出现,所以对单个字符来说状态是0或1,0位不出现,1位出现。
输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]递归就像一棵树,画出树状图,比较好理解。给定一个可包含重复数字的序列,返回所有不重复的全排列。
以最常见的全排列为例,用 S(A)表示集合 A 的元素个数。用 9 组成数字不重复的九位数。
前二个不变,先排列后面的两位,只有两种情况 c d和 d c;a不变,b和c交换位置,还是排列后两位,还是两种情况 b d和 d b;a不变,b和d交换位置,排列后两位,两种情况c b和b c;后3位的6种情况全有了。
相关问答
Q1: Java实现几个字母的所有组合
这种方式不知你接受不,那就是你有多少个需要组合的字符就嵌套多少层for循环。
这是我写的一个取组合的方法:package Combination.c3;import java.util.ArrayList;import java.util.List;public class Combinations { / 设有n个元素,组合数量有2的n次方种。
字母允许重合是四十多万条记录 不允许重合是三十多万条 这些组合写到txt文件里面是三四百K呢 用计算器算的,呵呵。这个代码自己写写应该不太难哈,如果真的有必要都列出来的话。
该字典包含可构成密码的所有合法字符;在[6, 12]内随机生成一个int作为密码长度;从字典中随机选取一个字符,共选取int次组成密码。还可以制定高级规则,如同种字符不能相邻出现等。
Q2: 在java环境中用递归方法求n个数的无重复全排列,n=3。
1、递归实现,取数字(字符串)中第i个位置的字符,然后将他和剩余的字符拼接,剩余的字符串当成有一个全排列的输入,这样递归下去,只剩一个字符时全排列就是本身。
2、继续做上一个前缀 } } } void main(){ char str[N];printf(请输入一个字符串,将进行全排列。
3、对于递归的基本部分,采用n = 1。当只有一个元素时,只可能产生一种排列方式,所以 perm (E) = ( e),其中e 是E 中的唯一元素。
关于递归java全排列代码和java全排列递归算法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。








