A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 许智敏 中级黑马   /  2013-5-15 14:27  /  1082 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 许智敏 于 2013-5-15 16:07 编辑
  1. /*
  2. * 给定一个数组或串,求他的全排列的方法。
  3. * 比如 1 2 3 4 5 的全排列,
  4. * 数组中的每个元素只能出现一次的全排列。
  5. */

  6. package summary;
  7. public class 全排列 {
  8.         public static void main(String[] args){
  9.                 int[] arr = {1,2,3,4,5};
  10.                 paiLie(arr,0,arr.length-1);
  11.         }
  12.         public static void paiLie(int[] arr,int start,int end){
  13.                 if(start>=end){
  14.                         for(int x : arr)
  15.                                 System.out.print(x+",");
  16.                         System.out.println();
  17.                         return;
  18.                 }
  19.                 else{
  20.                         for(int i=start;i<=end;i++){
  21.                                 int temp = arr[start];
  22.                                 arr[start] = arr[i];
  23.                                 arr[i] = temp;
  24.                                 
  25.                                 paiLie(arr,start+1,end);
  26.                                 
  27.                                 temp = arr[start];
  28.                                 arr[start] = arr[i];
  29.                                 arr[i] = temp;
  30.                         }
  31.                 }
  32.                         
  33.         }
  34. }
复制代码

1 个回复

倒序浏览
本帖最后由 许智敏 于 2013-5-15 16:06 编辑
c15881291595 发表于 2013-5-15 15:16
你这个只能每个元素不同的全排列吧。。 { 1, 2, 2, 4, 5 } 呢?

恩。就是对给定的数组全排列,数组中每个字符只能出现一次的全排列。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马