关键词:
全排列
一 问题描述
给出一串字符的全排列
二 问题分析
采用回溯算法之排列树
三 代码实现
package backtracking_perm;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
import java.util.LinkedList;
import javax.rmi.PortableRemoteObject;
public class bin
public static void main(String[] args) throws IOException
char []x=‘A‘,‘B‘,‘C‘,‘D‘;
perm myPerm=new perm(x);
class perm
char []ch;
char []x;
LinkedList<String> resultSet=new LinkedList<String>();
public perm(char []x) throws IOException
this.x=x;
this.ch=Arrays.copyOf(x, x.length);
Perm(0);
display();
public void Perm(int k) //k表示处理位置
//制造排列树
if(k==x.length-1) //叶子结点 递归出口
resultSet.add(String.valueOf(x)); //为何无法直接添加x
// System.out.println(String.valueOf(x));
return;
for(int i=k; i<x.length; i++)
char t=x[i];
x[i]=x[k];
x[k]=t;
Perm(k+1);
t=x[i];
x[i]=x[k];
x[k]=t;
public void display() throws IOException
BufferedWriter fout=new BufferedWriter(new FileWriter("out.txt"));
fout.write("ch[i]:");
fout.newLine();
fout.write(String.valueOf(ch));
fout.newLine();
fout.flush();
fout.write("x[i]:");
fout.newLine();
for(int i=0; i<resultSet.size(); i++)
fout.write(String.valueOf(resultSet.get(i)));
fout.newLine();
fout.newLine();
fout.flush();
四 运行结果
五总结收获
- 熟练回溯法
- 使用Linkedlist类
- Sting.valueOf();
六不足
1.手速太慢
2. 做题太少
全排列(代码片段)
全排列回溯算法之排列树一问题描述给出一串字符的全排列二问题分析采用回溯算法之排列树三代码实现packagebacktracking_perm;importjava.io.BufferedWriter;importjava.io.FileWriter;importjava.io.IOException;importjava.util.Arrays;importjava.util.LinkedList 查看详情
全排列(代码片段)
全排列给定一个没有重复数字的序列,返回其所有可能的全排列。示例输入:[1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]题解/***@paramnumber[]nums*@returnnumber[][]*/varpermute=function(nums)vartarget=[];recursive(nums,[],ta 查看详情
常见的算法问题全排列(代码片段)
...采用暴力破解所以这个时候我就想进行一下总结:关于全排列问题的通用解法,比如:(无重复全排列)(有重复的选取)(从N个数中选取m个数然后进行排列的问题)我这里尝试总结一下:比如一般问题喜欢问1-9有多少种全排... 查看详情
全排列permutation(代码片段)
参考:C++STL全排列函数详解算法思路:(1)n个元素的全排列=(n-1个元素的全排列)+(另一个元素作为前缀);(2)出口:如果只有一个元素的全排列,则说明已经排完,则输出数组;(3)不断将每个元素放作第一个元素,然后将这个... 查看详情
java回文全排列(代码片段)
python打印全排列(代码片段)
python生成全排列(代码片段)
全排列思路详解(代码片段)
详解全排列分析在这里提到的全排列,和高中数学里遇到的全排列几乎是一个概念。主要应用于选择、求解概率事件的时候会用到全排列。也就是说我们可以从n个不同元素中任取m(m≤n)个元素,按照一定的顺序... 查看详情
全排列(代码片段)
全排列就是求排列组合里的A(m,n),(n>=m)的全部情况。我们要统计A(m,n)很简单用阶乘就可以求,但是要输出全部情况就有些困难了。这里我介绍记下用递归求解全排列全部情况的方法。1#include<cstdio>2#include<iostream>3usingnames... 查看详情
算法习题---字符串的全排序列(代码片段)
一:什么是全排列排列:从n个元素中任取m个元素,并按照一定的顺序进行排列,称为排列;全排列:当n==m时,称为全排列;比如:集合1,2,3的全排列为:123132213231321312我们可以将这个排列问题画成图形表示,即排列枚举树,比... 查看详情
全排列和全组合实现(代码片段)
...uo;有的人真是毫无长进,六年前某同事不会写程序输出全排列,昨天发邮件还是问我该怎么写,这时间浪费到我都看不下去了。”那时候就很好奇全排列到底是什么东西,到底有多难?今天复习的时候终于碰到这题了,结果... 查看详情
全排列补充(代码片段)
上回说到全排列,这里进行补充。运用搜索算法,进行全排列。1#include<iostream>23usingnamespacestd;4inta[1000];56voidsearch(intt)78if(t>3)910for(inti=1;i<=3;i++)11cout<<a[i]<<"";12cout<<endl;13return; 查看详情
textpalindromepermutationii--回文串全排列(代码片段)
全排列算法(递归)(代码片段)
全排列算法是一种经典的递归算法。例如集合a,b,c的全排列为(a,b,c)、(a,c,b)、(b,a,c)、(b,c,a)、(c,b,a)、(c,a,b)共3!种。 递归法求解的思路是先固定第一个元素,求剩下的全排列,求剩... 查看详情
stl全排列(代码片段)
...从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。如果这组数有n个,那么全排列数为n!个。 比如a,b,c的全排列一共有3!=6种分... 查看详情
46.permutations全排列(代码片段)
Givenacollectionof distinct integers,returnallpossiblepermutations.Example:Input:[1,2,3]Output:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]全排列是所有元素,所以index必须从0开始classSolutionpublicList 查看详情
全排列(代码片段)
给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入:[1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]vector<vector<int>>res;//这里的nums不用引用,它是各个节点当前状态对应的序列,这些序列互不相同。voidb... 查看详情
1120.全排列(代码片段)
...不同的小写字母组成的字符串,输出这个字符串的所有全排列。 我们假设对于小写字母有‘a‘<‘b‘<...<‘y‘<‘z‘,而且给定的字符串中的字母已经按照从小到大的顺序排列。输入:输入只有一行,是一个由不同... 查看详情