2017-11-16 9 views
0

static void combinationUtil()のメソッドをpublic static void main (String[] args)に入れる方法を探しています。java - 可能なすべての配列の組み合わせを1つのメソッド

私はその後、クラス全体が1つの方法だけpublic static void main (String[] args)を得たか、どのように私は配列データは[]このようpublic static void main (String[] args)

class permutation { 

    static void combinationUtil(int arr[], int data[], int start, int end, int index, int r){ 
    if (index == r){ 
     for (int j=0; j<r; j++){ 
      System.out.print(data[j]+" "); 
     } 
     System.out.println(""); 
     return; 
    } 


    for (int i=start; i<=end && end-i+1 >= r-index; i++){ 
     data[index] = arr[i]; 
     combinationUtil(arr, data, i+1, end, index+1, r); 
    } 
} 


public static void main (String[] args) { 
    int arr[] = {1, 2, 3, 4, 5,6,7}; 
    int r = 5; 
    int n = arr.length; 
    int data[]=new int[r]; 
    int start=0,end=n-1,index=0; 
    combinationUtil(arr, data, start, end, index, r); 
    } 
} 
+0

それが役立つかもしれない、この記事を見てお気軽に:http://blog.moertel.com/posts/2013-05-11-recursive-to-iterative .html。基本的には、メソッドが再帰(combinationUtil)によって動作しているので、単純にロジックをメインに移動するのは簡単ではありません。代わりに、再帰が何をしているのかを実現するループをメインに作成する必要があります。 –

答えて

0

に(ちょうどcombinationUtil機能を削除しますそれを置く印刷できる方法static void combinationUtil()を削除することを意味 mainメソッドの内容):

class permutation { 


    public static void main (String[] args) { 
    int arr[] = {1, 2, 3, 4, 5,6,7}; 
    int r = 5; 
    int n = arr.length; 
    int data[]=new int[r]; 
    int start=0,end=n-1,index=0; 

    if (index == r){ 
     for (int j=0; j<r; j++){ 
      System.out.print(data[j]+" "); 
     } 
     System.out.println(""); 
     return; 
    } 


    for (int i=start; i<=end && end-i+1 >= r-index; i++){ 
     data[index] = arr[i]; 
     combinationUtil(arr, data, i+1, end, index+1, r); 
    } 
    } 
} 
+0

こんにちは、ファイルをコンパイルした後、 "combinationUtil(arr、data、i + 1、end、index + 1、r);" for(int i = start; i <= end && end-i + 1> = r-index; i ++){ data [index] = arr [i];combinationUtil(arr、data、i + 1、end、index + 1、r); } – Yan

関連する問題