黑马程序员技术交流社区
标题:
如何获取一个无重复元素数组的全组合和全排列?
[打印本页]
作者:
fecuznmn
时间:
2015-6-9 08:40
标题:
如何获取一个无重复元素数组的全组合和全排列?
注意,是获取,不是遍历。
作者:
开弓没有回头箭
时间:
2015-6-9 14:21
这个不遍历如何获取全排列,不明白
作者:
micro_hx
时间:
2015-6-9 14:36
本帖最后由 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);
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2