가능한 모든 숫자 조합 조합의 합계를 계산해야합니다 (합계가 아닌 개별 합계). 조합은 숫자를 건너 뛸 수 없습니다.간격없이 배열의 모든 숫자 조합을 얻는 가장 빠른 방법
y> x의 경우 [x]와 [y] 사이에 모든 숫자를 추가해야합니다.
(n) + (n-1) + (n-2) + ... + 1이므로 n = 5 인 경우 15 조합이 있습니다.
나는 가능한 한 빨리해야하며 공간은 문제가되지 않습니다.
편집 : 2
unsigned long long r_all = 0;
std::vector<int> g_seentimes(m);
for(int i = 0; i<n; i++)
r_all += w[z];
if(r_all > r){
r = r_all;
}
}
for(int j = 0; j<n; j++){
unsigned long long r_temp = r_all;
for(int i = 0; i<(n-j); i++){
r_temp -= w[n-i];
if(r_temp > r){
r = r_temp;
}
}
r_all -= w[y];
if(r_all > r){
r = r_all;
}
}
및
for(int i = 0; i < n; i++){
unsigned long long r_temp = 0;
for(int j = 0; j<(n-i); j++){
r_temp += w[i+j];
if(r_temp > r){
r = r_temp;
}
}
}
//r is the answer
편집 : 나는 시도가 원래 경우, 예상 출력이 가능한 최대 수입니다,하지만 난 privided 예 버전을 simplyfied되는 두 개 이상의 조합에서 같은 수의 당신은 {5, 3, 5, 3, 1} = 1, 그러나 {5, 3, 1} = 9의 값을 추가하지 마십시오. 나는 그 부분을 알아 냈습니다. 모든 조합을 극복 할 수있는 가장 빠른 방법.
편집 3 : @Tuan333은 조합의 수에 대한 질문과 내가 그것을 보여 쉬울 것 같아요 :
X- chosen, x-unchosen
n = 5
XXXXX XXXXx XXXxx XXxxx Xxxxx
xXXXX xXXXx xXXxx xXxxx
xxXXX xxXXx xxXxx
xxxXX xxxXx
xxxxX
중첩 된'for' 루프. 첫 번째는 조합의 크기를 선택하고 두 번째는 숫자를 더하는 것입니다. – Haris
시도한 것을 보여줄 필요가 있습니다. – FunctionR
예상되는 출력의 작은 예를 제공 할 수 있습니까? 질문을 편집 할 때 +1을주었습니다. :) – gsamaras