`
alexander
  • 浏览: 4988 次
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

给出一个数字n,求出所有的全排列

J# 
阅读更多
给出一个数字n,求出所有的全排列,如给出3则结果为:
3210
2310
2130
2103
3120
1320
1230
1203
3102
1302
1032
1023
3201
2301
2031
2013
3021
0321
0231
0213
3012
0312
0132
0123
代码如下:
import java.util.*;
import java.io.*;
public class P1 {
	public static void main( String[] args  ); {
		try {
			BufferedReader in = new BufferedReader( new InputStreamReader( System.in ); );;
			System.out.println("Enter the number:");;
			String input = in.readLine();;
			int inputInt = Integer.parseInt( input );;
			P1 p = new P1();;
			LinkedList< String > a = new LinkedList< String >();;
			while( inputInt != -1 ); {
				a = p.convert( inputInt );;
				System.out.println("The Result is:");;
				for( int i = 0;i < a.size();;i++ ); {
					System.out.println( a.get( i ););;
				}
				System.out.println("contain " + a.size(); + " numbers!" );;
				System.out.println("Enter the number:");;
				input = in.readLine();;
				inputInt = Integer.parseInt( input );;
			}
		}catch( Exception e ); {
			e.printStackTrace();;
		}
	}
	public LinkedList<String> convert( int n ); {
		LinkedList< String > temp = new LinkedList< String >();;
		LinkedList< String > result = new LinkedList< String >();;
		if( n == 0 ); {
			result.add( "0" );;
			return result;
		}
		if( n < 0 ); {
			System.out.println("error!!");;
			return temp;
		}
		temp = convert( n - 1 );;
		String tempStr = new String();;
		StringBuffer tempSB = new StringBuffer();;

		for( int i = 0;i < temp.size();;i++ );  {
			tempStr = temp.get( i );;
			//System.out.println( "TEST1:" + tempStr );;
			tempSB = new StringBuffer( tempStr );;
			for(int j = 0;j < n + 1;j++ ); {
				tempStr = new String( tempSB.insert(j,n); );;
				result.add( tempStr );;
				tempSB.deleteCharAt( j );;
				//System.out.println( "TEST2:" + tempStr );;
			}
		}
		return result;
	}
}
分享到:
评论

相关推荐

    输出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...

    回溯法 - 输出自然数1到n所有不重复的排列,即n的全排列

    根据给定文件的信息,本文将深入探讨如何使用回溯法来输出自然数1到n的所有不重复排列(即n的全排列)。同时,还将提供一个Java实现的具体示例。 ### 回溯法简介 回溯法是一种通过尝试解决离散和组合问题的方法,...

    全排列算法 实例 一种实现了n个数全排列的算法

    在全排列问题中,我们可以将每个位置视为一个决策点,尝试将所有可能的数字放入当前位置,然后递归地对剩余位置进行同样的操作,直到所有位置都被填满。如果在某个时刻发现当前的排列不满足全排列的要求,就回溯到上...

    输出n个整数的全排列

    全排列是指从n个不同元素中取出n个元素,按照一定的顺序排列,每一种排列都是一个不同的排列。例如,对于数字集合{1, 2, 3},全排列有:123, 132, 213, 231, 312, 321。 在C++中,我们可以使用递归的方式来实现...

    C++n个数全排列的算法

    它涉及到从一个给定的数列中找出所有可能的顺序,其中每个元素的位置都是唯一的。在这个问题中,我们的目标是找到n个不同数字的所有可能排列方式。 在C++中实现全排列可以使用回溯法,这是一种在尝试解决问题时,当...

    N个数全排列的非递归算法

    在描述中提到了一个博客链接,虽然具体内容没有给出,但通常博主会详细解释如何用非递归的方式解决全排列问题。非递归算法通常采用迭代或回溯的方式来完成,这种方式相对于递归可能会更节省内存,因为递归深度过大...

    全排列数生成

    行,每行都是从1~N所有整数的一个全排列,各整数之间以空格分隔。各行上的全排列不重复。输出各行遵循“小数优先”原则, 在各全排列中,较小的数尽量靠前输出。如果将每行上的输出看成一个数字,则所有输出构成升序...

    易语言数字文本的全排列.rar

    - 当所有数字都处理完后,弹出或出队一个排列,继续处理下一个排列,直到数据结构为空。 在"易语言数字文本的全排列"这个压缩包文件中,很可能包含了实现上述算法的源代码示例。通过学习这些代码,你可以了解...

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

    全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个。现以{1, 2, 3, 4, 5}为 ...为了更容易理解,将整组数中的所有的数分别与第一个数交换,这样就总是在处理后n-1个数的全排列。

    c# n的全排列

    在全排列问题中,我们可以从第一个元素开始,依次尝试将每个未使用的元素放在当前位置,然后对剩余元素进行同样的操作,直到所有位置都被填充或者没有可用元素为止。 以下是一个简单的C#实现全排列的递归示例: ``...

    N个自然数的字典序全排列

    N个数字的字典序全排列,自己的小作业,参考dfs写的,

    对字符串或者一串数字进行全排列

    大家都知道对一个字符串进行排列是一个NP难问题,解决起来其实非常简单,只需要进行深度递归,将后面位置的数字或字符与基位置的进行调换,再选择输出即可!

    n个数的全排列

    当我们谈论“n个数的全排列”时,我们指的是从n个不同的元素中选取n个元素,并按照一定的顺序进行排列,每一种不同的排列方式就称为一个全排列。全排列的总数可以用阶乘表示,即n!(n的阶乘),n! = n × (n-1) × ...

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

    在计算机科学中,全排列是一个非常重要的概念,它指的是将一个集合中的元素按照一定的顺序排列出来的所有可能的排列方式。在这个文件中,我们将讨论CC++中生成从1到n的全排列算法,以及字符串的全排列算法。 一、...

    易语言源码易语言数字文本的全排列.rar

    在这个“易语言源码易语言数字文本的全排列.rar”压缩包中,包含了一个关于如何使用易语言实现数字文本全排列的源代码示例。接下来,我们将深入探讨易语言以及如何在其中实现数字文本的全排列算法。 首先,让我们...

    c++实现全排列

    C++实现全排列算法详解 C++实现全排列是算法中的一种常见问题,解决该问题可以使用递归和非递归两种...通过建立一个从一个整数到一种排列的一一对应关系,我们可以使用一个简单的 for 循环,打印出所有的排列情况。

    编写程序输出前n个正整数的字典序全排列

    使用递归 :-------------输入给出正整数n,输出1到n的全排列,排列的输出顺序为字典序,每种排列占一行,数字间无空格,

    Java实现n位数字的全排列

    以下是一个Java实现n位数字全排列的示例代码: ```java public class Test { static int k = 0; public static void main(String[] args) { int a[] = {1, 2, 3, 4, 5}; // 定义一个n位数字数组 permutations...

    用回溯法求序列的全排列

    在这个问题中,我们要用回溯法来找出一个序列的所有可能排列。 全排列是指从n个不同元素中取出n个元素,按照一定的顺序排列,每个元素都恰好出现一次。例如,对于序列{1,2,3},它的全排列包括{1,2,3},{1,3,2},{2,...

Global site tag (gtag.js) - Google Analytics