만약 내가 a=1, b=3, c=4
과 d=2, e=3, f=3
라면 1 + 3 + 4 = 8 = 2 + 3 + 3
라인을 따라 무언가를 인쇄하고 싶다고 정확하게 이해한다면. 첫째, 지금하고있는 일은 Floris와 같은 두 개의 배열을 만드는 것입니다. 다음과 같이 당신이하고 싶은, 배열 한 배열의 모든 값을 저장할 수 있습니다 :
int max; \\ To determine the value of max see the edit below.
int array[][] = new int[max][num];
int index = 0;
for (int a=0; a < num; a++) {
for (int b=a; b < num; b++) {
for (int c=b; c < num; c++) {
array[index][0] = a;
array[index][1] = b;
array[index][2] = c;
array[index][3] = a + b + c;
index++;
}
}
}
for (int i = 0; i < max; i++) {
for (int j = i; j < max; j++) {
if (array[i][3] == array[j][3]) {
string outString = array[i][0] + " + " + array[i][1] + " + " + array[i][2] + " = " + array[i][3] + " = " + array[j][0] + " + " + array[j][1] + " + " + array[i][2];
System.out.println(outString);
}
}
}
모든 값을 밖으로 던져 때문에 당신은 내가
b
에서
a
에서
b
및
c
을 시작하여 성능을 향상 것을 볼 수 있습니다
여기서는 b < a
또는 c < b
입니다. 이것은 또한 이어야합니다 귀하의 if
진술에 대한 필요성을 제거해야합니다 (나는 이것을 테스트하지 않았기 때문에 말해야합니다). 트리플 중첩 루프의 복잡성 때문에 독립 인덱스를 사용해야했습니다.
편집 2 : 나를 무시하십시오. 나는 조합론을 잘못했다. An,k
을 길이가 k
인 정렬되지 않은 번호 집합으로 구성하고 [n]
의 요소를 갖도록합니다 (원하는 것을 얻을 수 있음). 그런 다음 An,k = An-1,k + An,k-1
. 우리는 An, 1 = n (값은 0, 1, 2, 3, 4, ..., n이므로)과 A1,n = 1
(유일한 값은 11111 ... 1 n 번일 수 있기 때문에)을 알고 있습니다. 이 경우 우리는 n= num
및 k = 3
에 관심이있는, 그래서 값을 연결 우리는
A_num,3 = A_num-1,3 + A_num,2
당신이 대답에 와서 재귀 때까지 식을 적용받을. 예를 들어, 납입 5 인 경우 :이
binomial(num, num)
하지만 내가 확실히 말할 수있는 일을하지 않은
(num + (num - 1)(2) + (num - 2)(3) + ... + (2)(num - 1) + num)
로 단순화 할 수있다처럼
A_5,3 = A_4,3 + A_5,2
= A_3,3 + A_4,2 + A_4,2 + A_5,1
= A_3,3 + 2(A_4,2) + 5
= A_2,3 + A_3,2 + 2(A_3,2) + 2(A_4,1) + 5
= A_2,3 + 3(A_3,2) + 2(4) + 5
= A_1,3 + A_2,2 + 3(A_2,2) + 3(A_3,1) + 2(4) + 5
= 1 + 4(A_2,2) + 3(3) + 2(4) + 5
= 1 + 4(A_1,2) + 4(A_2,1) + 3(3) + 2(4) + 5
= 1 + 4(1) + 4(2) + 3(3) + 2(4) + 5
= 5(1) + 4(2) + 3(3) + 2(4) + 5
것 같습니다.
배열의 모양을 정확히 나타낼 수 있습니까? 지금은 길이가 4 인 배열이 두 개있는 것 같고 사용하지 않고 값을 반복적으로 덮어 쓰는 것입니다. – Maria
지금 당신은'a, b, c '를 독립적으로 루핑하고,'d, e, f'를 반복합니다. 첫 번째 중첩 된'for'가 끝날 때 배열에'[num, num, num, 3 * num]'이 있습니다. 원칙적으로 두 번째 루프의 모든 반복은 첫 번째 루프의 해당 반복과 동일한 데이터를 생성하며 중첩 루프는 같은 값으로 종료됩니다. 당신이 성취하려는 것을 확신하지 못합니까? – Floris
자신의 다른 실행 시간에 두 개의 배열을 만들려고하고 결국 arrayOne과 arrayTwo가 각각의 배열의 세 번째 요소에서 같은 합계를 갖는 경우에만 찾고 생성 한 모든 배열을 스캔하려고합니다. 존경하는 배열을 표시하십시오 – Mario