`

全排列

阅读更多

使用递归进行操作,如下代码:

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class TotalPermutation 
{
	private static int size;
	private static int count;
	private static char[] ch;
	
	public static void main(String[] args)
	{		
		String str = "abc";
				
		size = str.length();
		
		ch = new char[size];
		
		for(int i=0; i<str.length(); i++)
			ch[i] = str.charAt(i);
		
		Anagram(size);
	}
	
	public static void Anagram(int size)
	{
		if(size == 1)
			return;
		
		for(int i=0; i<size; i++)
		{
			Anagram(size-1);
			if(size == 2)
				Display();
			Rotate(size);
		}
	}
	
	public static void Rotate(int current)
	{
		int pos = size - current; 
		char temp = ch[pos];
		
		for(int i=pos+1; i<size; i++)
			ch[i-1] = ch[i];
		ch[size-1] = temp;
	}
	
	public static void Display()
	{
		count++;
		System.out.print(count + " ");
		for(int i=0; i<size; i++)
			System.out.print(ch[i]);
		System.out.println();
	}
}

 

输出为:

 

1 abc
2 acb
3 bca
4 bac
5 cab
6 cba

 

1
0
分享到:
评论

相关推荐

    全排列acc pascal程序加题解 全排列

    全排列acc pascal程序加题解 全排列 Time Limit:20000MS Memory Limit:65536K Total Submit:506 Accepted:218 Description 列出所有数字1到数字n的连续自然数的排列,要求所产生的任一数字序列中不允许出现得复...

    全排列代码,C语言代码,用来解决全排列问题

    全排列代码,C语言代码,用来解决全排列问题,csc 认证

    全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个。现以{1, 2, 3, 4, 5}为

    全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个。现以{1, 2, 3, 4, 5}为 例说明如何编写全排列的递归算法。 1、首先看最后两个数4, 5。 它们的全排列为4 5和5 4, 即以4开头的5的全排列...

    使用swap求解不重复字符串的全排列

    123的全排列有123、132、213、231、312、321这六种。首先考虑213和321这二个数是如何得出的。显然这二个都是123中的1与后面两数交换得到的。然后可以将123的第二个数和每三个数交换得到132。同理可以根据213和321来...

    全排列算法C语言超简洁

    自己写的基于字符的全排列算法,代码简洁,高效,7位数的全排列都是秒排!用到了广度优先排列,深度优先搜索和几个递归,唯一没完成的是退出时释放内存,呵呵,破解密码时超有用的哟,,

    全排列——递归排序和字典序列

    全排列算法有两个比较常见的实现:递归排列和字典序排列。 (1)递归实现 从集合中依次选出每一个元素,作为排列的第一个元素,然后对剩余的元素进行全排列,如此递归处理,从而得到所有元素的全排列。 (2)字典...

    计算方法习题 适合学生习题参考 设R=(1, 2, .., n),计算R的全排列。

    /*设R=(1, 2, .., n),计算R的全排列。 分治法求解全排列的算法思想: 设R=(1, 2, .., n)的全排列为P(R), 若R=(),则P()=(); 否则,P(R)={(1)P(2, 3, .., n),(2)P(1, 3, .., n), (3)P(2, 1, .., n), .., (n)...

    C语言重复数全排列的代码

    生成这些字符的不重复的全排列,并将结果打印到标准输出上。 【输入形式】 从标准输入上读入一个由字母、数字组成的字符串,字符串的长度小于100,其中包含重复的字符。 【输出形式】 向标准输出印...

    Java实现字符数组全排列的方法

    主要介绍了Java实现字符数组全排列的方法,涉及Java针对字符数组的遍历及排序算法的实现技巧,需要的朋友可以参考下

    排列里面的全排列,全排列,全排列

    用C++语言写的全排列,有助于理解递归,全排列,全排列,全排列,全排列

    随机全排列生成程序及其应用开发(有程序代码)

    编制生成 0~n(n≤255)的一个全排列的程序,可选择下列两个方法之一或自行设计另外方法: 方法 1:从一个随机文件读取 n+1 字节数据 d0,d1,¡ ,dn。由预先取定的一个 0~n 的全排列 P(比如,可为 0~n 的自然排列)...

    n个元素全排列

    适用于算法课程求n个元素的全排列,从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。 公式:全排列数f(n)=n!(定义0!=1)

    N个数全排列c语言算法

    输入N,输出1-N全排列c语言算法,非递归算法................

    CC++全排列..1--n的全排列以及字符串的全排列

    CC++全排列..1--n的全排列以及字符串的全排列

    输出有重复字符的全排列

    输出有重复字符的全排列,C++源码......

    输出n个数字的全排列(可重复)

    1、输入n个数(不重复),求n个数字的全排列 如:n=3 全排列的数字为 1 2 3 则输出 123 132 213 231 321 312 2、输入n和k(n》=k)求n个数字的(n,k)排列 如n=3,k=2 输入的三个数位1 2 3 则输出 12 13 21 23 31...

    使用swap函数求解带有重复字符串的全排列

    这样我们也得到了在全排列中去掉重复的规则——去重的全排列就是从第一个数字起每个数分别与它后面非重复出现的数字交换。用编程的话描述就是第i个数与第j个数交换时,要求[i,j)中没有与第j个数相等的数。下面给出...

    使用for循环实现全排列

    使用for循环实现全排列是最简单最基础的一个全排列的过程,其他的全排列思想都是出自此处。

    组合数学全排列算法

    实现了字典序法、递增进位制数法、递减进位制数法、邻位对换法四种全排列算法。全排列算法有很多种,这里只是其中的一些,可以调试运行比较一下各种算法的效率。(该代码为初级版本,注重算法的实现,在交互方面需要...

    用java语言实现数字全排列

    题目描述:给定一个数列a1,a2,a3…an,输出他所有的全排列。 算法设计描述: 1、获取当前的一种排列,用start,end分别表示该排列的列头,列尾; 2、判断start是否和end相等,若相等,执行3,否则执行4; 3、将当前...

Global site tag (gtag.js) - Google Analytics