全排列

作者: 孙睿888 | 来源:发表于2016-08-13 15:46 被阅读0次

对几个数进行全排列,如1,2,3进行全排列。可以采用递归加循环的方式.
一次排列的结束就输出一次。else中的for循环代表对每一层进行全排列。
i=0 代表对第一层(3个数排列)进行排列 i=1 代表对第二层 (两个数)依次类推。
而交换语句,是每个数都和这层的第一个数交换,确保所有的数都能在前面。
package test;
import java.util.Scanner;
public class quanpailie
{
public static void perm(int a,int asum[],int k)
//a数字的个数 k+1从哪个数开始排列
{
if(k==asum.length-1) //一次排列结束 输出 个数满足依次排列
{
for(int i=0;i<asum.length;i++)
System.out.print(asum[i]+"\t");
System.out.println();
}
else
{
for(int i=k;i<a;i++)//i值非常重要
{
swap(asum,k,i);
perm(a,asum,k+1);
swap(asum,k,i);
}
}
}
public static void swap(int asum[],int a,int b)//不加数组无法进行交换
{
int temp;
temp=asum[a];
asum[a]=asum[b];
asum[b]=temp;
}
public static void main(String[] args)
{
System.out.println("请输入你的数字个数");
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
System.out.println("请输入你的数字");
int asum[]=new int[a];
for(int i=0;i<asum.length;i++)
{
asum[i]=sc.nextInt();
}
int k=0;
perm(a,asum,k);
//a代表数的个数 asum 代表这些数 k+1代表从第几个开始排序
}
}

相关文章

  • 全排列与字典序

    全排列 递归实现全排列; 首先来说递归算法实现全排列: 例如,对于{1,2,3,4}的例子进行全排列,其可以分解...

  • 全排列

    求全排列最简单的就是递归了123 的全排列共有 6 个, 123 的全排列等于以 1 开头 23 的全排列, 加上...

  • 全排列

    题目 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排...

  • 全排列

    递归的版本image.png

  • 全排列

  • 全排列

  • 全排列

    给出一个列表[1,2,3],其全排列为: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,...

  • 全排列

    给定一个数字列表,返回其所有可能的排列。

  • 全排列

    给定一个没有重复数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3]输出:[[1,2,3],[1,...

  • 全排列

    两种方法:第一种方法:递归: 从集合中依次选出每一个元素,作为排列的第一个元素,然后对剩余的元素进行全排列,如此递...

网友评论

      本文标题:全排列

      本文链接:https://www.haomeiwen.com/subject/kqzesttx.html