任意数字序列如“123456”之类,输出它们所有的排列组合

hy2030 2012-09-23 02:07:57
任意数字序列如“123456”之类,输出它们所有的排列组合
...全文
1608 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ceclinux 2013-01-26
  • 打赏
  • 举报
回复
用递归吧
import java.util.Arrays;


public class Permutation {
	public static void main(String[] args){
		int[] array=new int[]{1, 2,3,4,5,6};
		permute(array,0);
	}
public static void permute(int a[],int s){
	if(s==a.length){
		System.out.println(Arrays.toString(a));
	}
	else
		for(int i=s;i<a.length;++i){
			swap(a,s,i);
			permute(a,s+1);

			
			swap(a,s,i);
		
		}
}

private static void swap(int[] a,int s,int i) {
	int t=a[s];
	a[s]=a[i];
	a[i]=t;
	
}
}
whlweb 2013-01-25
  • 打赏
  • 举报
回复
楼上写的很好
nmyangym 2012-09-24
  • 打赏
  • 举报
回复
借鉴http://topic.csdn.net/u/20120919/07/ffcd7b53-a080-4122-8136-1a50e7898779.html的代码,写了一个楼主参考一下.

import java.util.Arrays; //用于数组输出。
import java.util.LinkedList;
import java.util.List;

public class TestArrange
{
static String toBeArranged ="123456"; //待排列的字符串。
static String[] array = stringToStringArray(toBeArranged); //将其转换成数组。{"1","2"...}
static int length=array.length; //字符串长度。
static int k=0; //存放数组时计数。
static String[] result=new String[total(length)]; //数组大小是length的阶乘。

public static void main(String[] args)
{
listAll(Arrays.asList(array), "");
System.out.println(Arrays.toString(result)); //输出。
}
//主要的计算方法。
public static void listAll(List candidate, String prefix)
{
if(prefix.length()==length) //小于字符串长度的组合忽略。
{
result[k++]=prefix; //存放数组里。
}
for(int i=0;i<candidate.size();i++)
{
List tmp = new LinkedList(candidate);
{
listAll(tmp, prefix + tmp.remove(i)); //函数中的参数从右边开始解析
}
}
}
//将字符串转成数组。
static String[] stringToStringArray(String s)
{
int length=s.length();
if(length<=0)
{
return new String[0];
}
String[] result=new String[length];
for(int i=0;i<length;i++)
{
result[i]=""+s.charAt(i);
}
return result;
}
//计算number阶乘,为结果数组的容量。
static int total(int number)
{
int number1=1;
for(int i=1;i<=number;i++)
{
number1*=i;
}
return number1;
}
}
hy2030 2012-09-23
  • 打赏
  • 举报
回复
排列。二楼中的意思
oWeiNi1 2012-09-23
  • 打赏
  • 举报
回复
例如输入。。。123
输出的是
132
123
213
231
321
312
?我不会....同求!答案!
ldq67123 2012-09-23
  • 打赏
  • 举报
回复
究竟是排列,还是组合

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧