> 백엔드 개발 > C++ > C로 구현된 한 집합에 있는 두 음수의 하위 집합 간의 차이를 최대화합니다.

C로 구현된 한 집합에 있는 두 음수의 하위 집합 간의 차이를 최대화합니다.

WBOY
풀어 주다: 2023-08-25 14:49:13
앞으로
917명이 탐색했습니다.

C로 구현된 한 집합에 있는 두 음수의 하위 집합 간의 차이를 최대화합니다.

양수와 음수로 구성된 배열이 있습니다. 이 작업은 배열에서 양수 하위 집합과 음수 하위 집합 간의 최대 차이를 찾는 것입니다. 양수와 음수의 하위 집합이 있으므로 차이(양수의 합) - (음수의 합)은 항상 최대가 됩니다. 음수를 빼면 더해지기 때문입니다. 모든 음수를 양수로 변환하고 배열의 모든 요소를 ​​추가하면 원하는 결과가 생성됩니다. 이해를 돕기 위해 몇 가지 예를 살펴보겠습니다. −

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

  • 현재 요소가 음수(

  • 합계에 각 요소를 추가합니다.

  • 합계를 가능한 가장 큰 부분 집합 차이로 반환합니다.

Example

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;
}
로그인 후 복사

Output

위 코드를 실행하면 다음과 같은 출력이 생성됩니다 −

Maximized difference between two subsets: 70
로그인 후 복사

위 내용은 C로 구현된 한 집합에 있는 두 음수의 하위 집합 간의 차이를 최대화합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿