全排列
Posted howbin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全排列相关的知识,希望对你有一定的参考价值。
全排列
一 问题描述
给出一串字符的全排列
二 问题分析
采用回溯算法之排列树
三 代码实现
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. 做题太少
以上是关于全排列的主要内容,如果未能解决你的问题,请参考以下文章
html 将以编程方式附加外部脚本文件的javascript代码片段,并按顺序排列。用于响应式网站,其中ma
蓝桥杯 三行代码解决 “全排列的价值”(2022省赛pythonA组)
蓝桥杯 三行代码解决 “全排列的价值”(2022省赛pythonA组)