2016-09-29 6 views
-1

ターゲット製品番号を指定すると、製品がターゲット製品と等しいすべてのサブセットがint配列から読み込まれます。例えば製品が指定されたターゲットと等しいint配列のすべてのサブセットを検索

Target product is 12. 

An int array is { 1, 3, 1, 2, 2, 1,2,4 }. 

Then all satisfied subsets whose product is 12 are as follows: 

12 = 1*3*1*2*2 
12 = 3*2*2*1*1*1 
12 = 4*3*1*1*1 
+1

興味深い問題。問題を解決するためのコーディングの試みはどのように見えますか? –

+0

Stackで使用しましたが、もっと多くの要素に行くとスタックアップし、ArrayIndexOutOfBounds例外で私を取得します。 – ARP

+0

@ARPコードを投稿すると、人々があなたを助けることができます。 –

答えて

0
public class Subset { 
public static int PROD = 12; 

public static void main(String[] args) { 
    int arr[] = { 1, 3, 1, 2, 2, 1, 2, 4 }; 
    boolean visited[] = new boolean[arr.length]; 
    function(arr, 0, 1, visited); 

} 

public static void function(int a[], int index, int prod, boolean visited[]) { 
    if (prod == PROD) { 
     print(a, visited); 
    } 
    if (index > a.length - 1) 
     return; 
    function(a, index + 1, prod, visited); 
    visited[index] = true; 
    function(a, index + 1, prod * a[index], visited); 
    visited[index] = false; 
} 

private static void print(int[] a, boolean[] visited) { 

    for (int i = 0; i < a.length; i++) { 
     if (visited[i] == true) { 
      System.out.print(a[i] + " "); 
     } 

    } 
    System.out.println(); 
} 

}

+0

番号が配列内で繰り返されるので、繰り返しサブセットが得られます。 – Raman

+0

再帰はなく、少ない回数でした。ループの..しかし、最終結果は私が得ている例外とです。 私はこれを再帰なしで実装することはできません。ループの? – ARP

+0

あなたはどんな例外を抱えていますか? Algoは複数の方法で解決できます。私は基準を満たすためにナップザックを行っています。 – Raman

関連する問題