「全排列java代码演示」全排列java代码演示图
本篇文章给大家谈谈全排列java代码演示,以及全排列java代码演示图对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
java编程输出0到9的全排列组合情况
public class Test { /**
* @param args
*/ public static String str(int all, String num) {
String str = "";
for (int i = 1; i = all - num.length(); i++) {
str += "0";
} return str + num;
} public static void main(String[] args) {
// TODO Auto-generated method stub
int n = 9; //一个多少位最好小点,太大了运行慢
String num = "";
for (int i = 1; i = n; i++) {
num += "9";
}
for (int i = 1; i = new Integer(num); i++) {
System.out.println(str(n, i + "")); } }
}
怎么用java实现输出a,b,c,d,e五个字符的所有可能的排列
public class FullArray ...{
public String[] s=...{"a","b","c"};
public void run()...{
int j2; //指向要对换的位置
int sLength=s.length;
for(int i=0;igetP(s.length);i++)...{ //外层循环以便获取全部组合
String[] tempString=s.clone(); //由于对象传的是句柄也就是地址,因此为保证原来数组不变,必须使用对象克隆
for(int j=0;ji;j++)...{ //i次的对换
j2=j%(sLength-1);
change(j2,tempString);
}
for(int l=0;lsLength;l++)...{ //输出这一次对换后的排列
System.out.print(tempString[l]);
}
System.out.println();
}
}
public int getP(int i)...{ //获得全排列数all
int all=1;
for(int j=i;j0;j--)...{
all=all*j;
}
return all;
}
public void change(int i,String[] tempString)...{//
String t="";
t=tempString[i];
tempString[i]=tempString[i+1];
tempString[i+1]=t;
}
public static void main(String[] args)...{
FullArray fa=new FullArray();
fa.run();
}
}
java全排列递归算法
思路:先有一个起始排列,如1234.从后面扫描,直到找到a[k],a[k]a[k+1];再从后面扫描,直到找到a[j],这里有 a[k]a[j]。交换a[k],a[j].再把a[k+1],...a[n-1]排序(从小到大),即得到了一个排列,再循环下去,直到找出所有的排序。用C语言的,参考下:
JAVA 全排列算法
递归实现,取数字(字符串)中第i个位置的字符,然后将他和剩余的字符拼接,剩余的字符串当成有一个全排列的输入,这样递归下去,只剩一个字符时全排列就是本身。程序中使用set去除了重复的数据,如果需要保留,将set换为list接口即可。
package mytest;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
/*
* @date:2012-2-8
* @author:
*
* 输入一个数字,讲输出 1到这个数字的全排列
*/
public class MyDemo2 {
private static SetString SET_STRING = new HashSetString();
private static SetLong SET_NUM = new HashSetLong();
public static void main(String[] args) {
System.out.println("begin ...... ");
testLong(234);
testString("a23");
print(SET_NUM);
print(SET_STRING);
System.out.println("end ...... ");
}
/**
* 测试数字
* @param num
*/
private static void testLong(long num){
long testNum = num;
String[] permutation;
for(long l=0; l=testNum; l++){
permutation = getAllOrder(String.valueOf(l));
for (int i = 0; i permutation.length; i++) {
SET_NUM.add(Long.valueOf(permutation[i]));
}
}
}
/**
* 测试字符串
* @param str
*/
private static void testString(String str){
String[] permutation = getAllOrder(str);
for (int i = 0; i permutation.length; i++) {
SET_STRING.add(permutation[i]);
}
}
private static void print(Set set){
System.out.println("/*****************************************************/");
int i=0;
for(Iterator it = set.iterator(); it.hasNext();){
i++;
if(i%10 == 0){
System.out.println();
}
System.out.print(it.next() + " ");
}
System.out.println();
System.out.println("/*****************************************************/");
}
/**
* 递归算法 全排列 去除重复
* @param str
* @return
*/
private static String[] getAllOrder(String str) {
String [] arrResult = null;
SetString set = new HashSetString();
if(str.length()1){
String result = "";
String charXInString;
String remainString;
for (int i = 0; i str.length(); i++) {
charXInString = str.charAt(i) + "";
remainString = str.substring(0, i)+ str.substring(i + 1, str.length());
for (String element : getAllOrder(remainString)) {
result = charXInString + element;
set.add(result);
}
}
arrResult = set.toArray(new String[set.size()]);
}else{
arrResult = new String[]{str};
}
return arrResult;
}
}
java全排列 数组
全排列算法很多,这是其中一个,使用递归——
import java.util.ArrayList;
import java.util.List;
public class PermAComb {
static Listint[] allSorts = new ArrayListint[]();
public static void permutation(int[] nums, int start, int end) {
if (start == end) { // 当只要求对数组中一个数字进行全排列时,只要就按该数组输出即可
int[] newNums = new int[nums.length]; // 为新的排列创建一个数组容器
for (int i=0; i=end; i++) {
newNums[i] = nums[i];
}
allSorts.add(newNums); // 将新的排列组合存放起来
} else {
for (int i=start; i=end; i++) {
int temp = nums
本篇文章给大家谈谈全排列java代码演示,以及全排列java代码演示图对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
; // 交换数组第一个元素与后续的元素nums
本篇文章给大家谈谈全排列java代码演示,以及全排列java代码演示图对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
= nums[i];nums[i] = temp;
permutation(nums, start + 1, end); // 后续元素递归全排列
nums[i] = nums
本篇文章给大家谈谈全排列java代码演示,以及全排列java代码演示图对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
; // 将交换后的数组还原nums
本篇文章给大家谈谈全排列java代码演示,以及全排列java代码演示图对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
= temp;}
}
}
public static void main(String[] args) {
int[] numArray = {1, 2, 3, 4, 5, 6};
permutation(numArray, 0, numArray.length - 1);
int[][] a = new int[allSorts.size()][]; // 你要的二维数组a
allSorts.toArray(a);
// 打印验证
for (int i=0; ia.length; i++) {
int[] nums = a[i];
for (int j=0; jnums.length; j++) {
System.out.print(nums[j]);
}
System.out.println();
}
System.out.println(a.length);
}
}
关于全排列java代码演示和全排列java代码演示图的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-17,除非注明,否则均为
原创文章,转载请注明出处。