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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

注意,是获取,不是遍历。

2 个回复

倒序浏览
这个不遍历如何获取全排列,不明白
回复 使用道具 举报
本帖最后由 micro_hx 于 2015-6-9 14:38 编辑

先将一下思路啊,就是n1.n2,n3,n4....
首先是n1 n2 交换位置 ,, 输出 , 然后n2 , n1位置复原
然后使n1 n3交换位置 , 输出 , 然后 n1 n3位置复原
....

相当于高中的排列组合啊。。。。


package t150605;

public class T5 {

        //交换数组中的元素
        public static void swap(int arr[] , int i , int j){
                int temp = arr;
                arr = arr[j];
                arr[j] = temp ;
        }
        
        public static void test(int arr[] , int start , int end){
                if(start+1 == end){
                        for (int i = 0; i < arr.length; i++) {
                                System.out.print(arr);
                        }
                        System.out.println();
                }else{
                        for(int m = start ; m < end ; m++){
                                //一次调换位置
                                swap(arr,m,start);
                                //调用原来的递归
                                test(arr,start+1,end) ;
                                //将调换位置的复原回来
                                swap(arr,m,start);
                        }
                }
        }
        
        public static void main(String[] args) {
                int arr[] = {3,5,4,7} ;
                test(arr,0,arr.length);
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马