나는이 코드를 가지고 ... 내가 필요한 바로 그 것이다. 미리 정의 된 int 배열을 대상 int로 합친 두 개의 int를 검색합니다. 그러나 셀에 값을 배치하는 대신 벡터에 값을 넣을 때 모든 값을 함께 배치합니다. [50] [40,10] [30,20] ... 등을 반환하는 대신 int 배열 [5040302010]과 타겟 50에 대해 [[50, 40,10,30,20 ... 등]] 어떻게 해결할 수 있습니까?벡터 내의 벡터
public Vector<Vector<Integer>> subsetSum(int[] array, int target) {
//creates vectors, adds inner vector to another vector
outer = new Vector<Vector<Integer>>();
inner = new Vector<Integer>();
outer.add(inner);
for (int k = 0; k < array.length; k++) {
for (int l = 1; l < array.length; l++) {
int sum = array[k]+array[l]; //sum of l and k
if (sum == target) {
//add l,k to vector
inner.add(array[l]);
inner.add(array[k]);
//prints l and k if their sum equals target
System.out.println(array[l]+"+"+array[k]+"="+target);
}
else {
System.out.print("");
}
}
//if k is the target, display
if (array[k] == target) {
//add k to vector
inner.add(array[k]);
//prints if int equals target
System.out.println(array[k]+"="+target);
}
}
//return combinations that add up to target in vector form
return outer;
}
오래된 벡터 인'Vector' 대신'List' (선언 된 타입)과'ArrayList' (생성 된 객체)를 사용할 수도 있습니다. 'inner'와'outer' 지역 변수를 만들었다면, 전체 함수도'static'으로 만들 수 있습니다. – msandiford
고마워요! 문제가 해결되었습니다. 후속 질문 (보너스 포인트?) : 위의 5040302010의 예와 마찬가지로 프로그램은 [10,40] 외에도 [40,10]을 보여줍니다. 어떻게 이걸 고칠 수 있겠 어? 감사. –
'1'보다는'k + 1'에'l'을 초기화하십시오. – davmac