递归:全排列的java实现
来源:互联网 发布:同花顺软件下载 编辑:程序博客网 时间:2024/05/21 07:53
全排列:比如有一组数123,它的全排列有123,132,213,231,321,312。下面的实现也考虑了重复的情况。
import java.util.Scanner;public class Permlist {/** * R={r1,r2,r3...rn} n=1时,perm(R)=(r),其中r是集合R中的唯一元素 * n>1时,Perm(R)由(r1)Perm(R1),(r2)Perm(R2),(r3)Perm(R3).....(rn)Perm(Rn)组成 *//* 交换 */void Swap(int[] list, int a, int b) {int temp = list[a];list[a] = list[b];list[b] = temp;}/* 递归排列 */void Perm(int[] list, int k, int m) {if (k == m) {for (int i = 0; i <= m; i++) {System.out.print(list[i]);}System.out.println(" ");} else {for (int i = k; i <= m; i++) {if (Isswap(list, k, i)) { // 去重Swap(list, k, i); //???Perm(list, k + 1, m);Swap(list, k, i); //???}}}}/* 判断重复 */boolean Isswap(int[] list, int a, int b) {for (int i = a; i < b; i++)if (list[i] == list[b])return false;return true;}public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.print("请输入数组的长度");int l = in.nextInt();int[] list = new int[l];for (int i = 0; i < l; i++) {System.out.print("请输入全排列的第" + (i + 1) + "个元素");list[i] = in.nextInt();}int k = 0;int m = l - 1;Permlist pl = new Permlist();pl.Perm(list, k, m);}}
0 0
- 递归:全排列的java实现
- java 全排列 递归实现
- java递归实现全排列
- java递归实现全排列
- Java递归实现全排列
- Java 递归实现全排列
- 全排列的递归实现
- 全排列的递归实现
- 全排列的递归实现
- 全排列的递归实现
- 全排列的递归实现
- 全排列的递归实现
- 全排列的递归实现
- 全排列的递归实现
- 全排列的递归实现
- 全排列的递归实现
- java 实现的用递归法实现全排列问题
- Java用递归实现的数组的全排列
- http异步大量图片下载,并用GridView显示九宫格图片样式
- PHP获取文件大小和目录大小
- UITabBar
- UNITY3D学习笔记15
- GNU组织的 gcc 和 g++ 的区别详解
- 递归:全排列的java实现
- 面试题5
- 带余除法专题
- 图的深搜与广搜
- Linux运行二进制文件时出现 can't execute :Permission denied
- 将svn插件和maven插件和findbugs插件插入到myeclipse10
- MongoDB查询操作限制返回字段的方法
- 简单探讨全排列的递归生成算法
- 最长公共子串(连续)