现在有一个数组array[]={1,2,3,4};要求从4个数中取出两个,不重复,组合公式C4^2=6种,即12,13,14,23,24,34.根据这个过程我们可以考虑按从小到大的顺序遍历数组,然后递归执行。
具体代码如下:
方法一:
package hello.ant; public class AlogZH{ public static void main(String[] args) { int array[]={1,2,3,4}; int n=2; int result[]=new int[n]; ZH(array, result, 0,0,n); } static void ZH(int array[],int result[],int index,int begin,int length){ if(length==0){ for(int i=0;i<result.length;i++){ System.out.print(result[i]); } System.out.println(); }else{ for(int i=begin;i<array.length;i++){ result[index]=array[i]; ZH(array, result, index+1,i+1, length-1); } } } }方法二:
package hello.ant; public class AlogZH2 { static int n=2; static int result[]=new int[n]; static int array[]={1,2,3,4,5}; static boolean flag[]=new boolean[array.length]; public static void main(String[] args) { ZH(0, 0); } static void ZH(int index,int begin){ if(index==n){ for(int i=0;i<result.length;i++){ System.out.print(result[i]); } System.out.println(); }else{ for(int i=begin;i<array.length;i++){ if(flag[i]){ continue; } flag[i]=true; result[index]=array[i]; ZH(index+1,i+1); flag[i]=false; } } } }
参考了http://blog.csdn.net/hymanxq/article/details/24490419这篇文章的内容。。