양수와 음수로 구성된 배열이 있습니다. 이 작업은 배열에서 양수 하위 집합과 음수 하위 집합 간의 최대 차이를 찾는 것입니다. 양수와 음수의 하위 집합이 있으므로 차이(양수의 합) - (음수의 합)은 항상 최대가 됩니다. 음수를 빼면 더해지기 때문입니다. 모든 음수를 양수로 변환하고 배열의 모든 요소를 추가하면 원하는 결과가 생성됩니다. 이해를 돕기 위해 몇 가지 예를 살펴보겠습니다. −
Input − Arr[] = { -2, 0, -3, 8, 10, 12, -4 }
Output − 두 하위 집합 간의 최대 차이 − 39
설명 − 양수 부분 집합 {0, 8,10,12}의 합은 30입니다.
음수 부분 집합 {-2, -3, -4}의 합은 -9
최대 차이는 다음과 같습니다. 30 - (-9) = 39
Input − Arr[] = { -5, -15, -3, -2, 10, 20, 15 }
Output − 두 하위 집합 간의 최대값 차이 − 70
설명 − 양의 부분 집합 {10, 20, 15}의 합은 45입니다.
음의 부분 집합 {-5, -15, -3, -2}의 합은 -25
최대 차이 45 - (-25) = 70이 됩니다
양수와 음수로 구성된 정수 배열 Arr[]을 사용합니다
함수 subsetDifference( int arr[ ],int n )은 음수와 양수의 하위 집합 간의 최대 차이를 찾는 데 사용됩니다. 두 개의 매개변수를 허용합니다. 하나는 배열 자체이고 다른 하나는 크기 n입니다.
배열의 모든 요소의 합계를 저장하려면 변수 sum=0을 사용하세요.
왼쪽부터 시작하여 for 루프를 사용하여 배열의 각 요소(i=0;i
현재 요소가 음수(
합계에 각 요소를 추가합니다.
합계를 가능한 가장 큰 부분 집합 차이로 반환합니다.
Demonstration
#include <stdio.h> int subsetDifference(int arr[], int n){ int sum = 0; for (int i = 0; i < n; i++){ if(arr[i]<0) arr[i]=arr[i]*-1; sum += arr[i]; } return sum; } // Driver Code int main(){ int arr[] = { -1, 3, 5, 17, -32, 12 }; int n = 6; printf("Maximized difference between subsets : %d", subsetDifference(arr, n)); return 0; }
위 코드를 실행하면 다음과 같은 출력이 생성됩니다 −
Maximized difference between two subsets: 70
위 내용은 C로 구현된 한 집합에 있는 두 음수의 하위 집합 간의 차이를 최대화합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!