数组的全排列问题
来源:互联网 发布:纪检监察网络管理中心 编辑:程序博客网 时间:2024/05/16 07:48
数组的全排列是一种考察递归思想的常考题,当然题目肯定会拐几个弯的~~这里记录一下最基本的全排列的思路:
考察如下的情形:
char[] a={'a','b','c'};那么它的全排列是;
abc acb bac bca cba cab
分析一下步骤:
1)固定a,然后后面的两个数进行全排列
2)固定b,后面的两个数进行全排列
3)固定c,后面的两个数进行全排列
很显然这是一个递归的过程,通过递归可以很简单的解决这个问题
下面是求全排列的程序:
public class QuanPaiLie { public static void permutation(char[] c,int start,int end){ if(end<=1){ return; } if(end==start){ System.out.println(c); } for(int i=start;i<=end;i++){ swap(c,i,start);//固定第一个数,第一个数的取值分别为数组中的每一个数 permutation(c,start+1,end);//对后n-1个数进行全排列 swap(c,start,i);//把顺序换回来 } } public static void swap(char[] c, int i, int j) { char temp = c[i]; c[i] = c[j]; c[j] = temp; } public static void main(String[] args) { String s="abc"; permutation(s.toCharArray(),0,s.toCharArray().length-1); }}总结:
求去重数组全排列的步骤如下:
1)分别在第一个位置固定每一个元素
2)对后续的n-1个数进行全排列
3)恢复本次排列中的初始状态
0 0
- 数组的全排列问题
- 数组全排列问题
- 解答一个数组全排列的问题
- 字符串、数组的全排列问题
- 数组的全排列
- 数组的全排列
- 数组的全排列
- 数组的全排列
- 数组的全排列
- 数组的全排列
- 数组的全排列
- 数组的全排列
- int数组全排列问题
- 全排列的问题
- 由erlang的递归理解数组的全排列问题
- 字符串数组的全排列到八皇后问题详解
- 关于数组全排列问题的解法解析(一)
- 字符串数组的全排列到八皇后问题详解
- ISCC 2017 部分解题记录 By Assassin
- SpringCloud概述
- QT 给WIdget设置 背景图片和背景颜色
- kettle 7.0实现数据裤全量转移
- 第二章 2.5-2.6
- 数组的全排列问题
- bzoj1507: [NOI2003]Editor
- Linux服务器的那些性能参数指标
- Maven的安装
- 常用的shape
- 大规模知识图谱数据存储实战解析
- Linux学习——第1章 Linux简介
- 算法学习之五:队列
- 子域名枚举的艺术 2017-05-03