Rumah > pembangunan bahagian belakang > C++ > Maksimumkan perbezaan antara dua subset nombor negatif dalam set, dilaksanakan dalam C

Maksimumkan perbezaan antara dua subset nombor negatif dalam set, dilaksanakan dalam C

WBOY
Lepaskan: 2023-08-25 14:49:13
ke hadapan
920 orang telah melayarinya

Maksimumkan perbezaan antara dua subset nombor negatif dalam set, dilaksanakan dalam C

Kami mempunyai tatasusunan yang terdiri daripada nombor positif dan negatif. Tugasnya adalah untuk mencari perbezaan maksimum antara subset nombor positif dan subset nombor negatif dalam tatasusunan. Oleh kerana kita mempunyai subset nombor positif dan negatif, perbezaan (jumlah nombor positif) - (jumlah nombor negatif) akan sentiasa maksimum. Ini kerana penolakan nombor negatif akan menambahnya. Menukar semua nombor negatif kepada nombor positif dan menambah semua elemen tatasusunan akan menghasilkan hasil yang diingini. Mari kita lihat beberapa contoh untuk memahami −

Input − Arr[] = { -2, 0, -3, 8, 10, 12, -4 }

Output − Perbezaan maksimum antara dua subset 39

Penjelasan − Jumlah subset positif {0, 8,10,12} ialah 30

Jumlah subset negatif {-2, -3, -4} ialah -9

Perbezaan maksimum ialah 30 - (-9) = 39

Input − Arr[] = { -5, -15, -3, -2, 10, 20, 15 }

Output − Perbezaan maksimum antara dua subset 70

Penjelasan − Jumlah subset positif {10, 20, 15} ialah 45

Jumlah subset negatif {-5, -15, -3, -2} ialah -25

Perbezaan maksimum akan menjadi 45 - (-25) = 70

Kaedah atur cara berikut adalah seperti berikut

  • Kami menggunakan tatasusunan integer Arr[] yang terdiri daripada nombor positif dan negatif

  • fungsi subsetPerbezaan( int arr[ ],int n ) digunakan untuk mencari perbezaan maksimum antara subset nombor negatif dan positif. Ia menerima dua parameter, satu ialah tatasusunan itu sendiri dan satu lagi ialah saiz n.

  • Gunakan jumlah pembolehubah=0 untuk menyimpan jumlah semua elemen tatasusunan.

  • Mulakan dari kiri dan gunakan gelung for untuk melelaran melalui setiap elemen tatasusunan (i=0;i

  • Jika elemen semasa ialah nombor negatif (

  • Tambahkan setiap elemen pada jumlah.

  • Kembalikan jumlah sebagai perbezaan subset terbesar yang mungkin.

Contoh

Demonstrasi

#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;
}
Salin selepas log masuk

Output

Jika kita menjalankan kod di atas, output berikut akan dihasilkan −

Maximized difference between two subsets: 70
Salin selepas log masuk

Atas ialah kandungan terperinci Maksimumkan perbezaan antara dua subset nombor negatif dalam set, dilaksanakan dalam C. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan