متدی بنویسید که یک آرایه دریافت و مشخص کند آیا آرایه را می توان طوری به دو قسمت تقسیم کرد که جمع اعداد قسمت اول و دوم با هم برابر باشد؟
/*
Size: 6
1 1 3 3 4 6
true
*/
//Java Programming
//By: Faryadi
//Edited By Moradi
//Website: Samiantec.ir
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("Size: ");
int n=input.nextInt();
int[] a=new int[n];
System.out.println("Enter values: ");
for (int i=0;i < n;i++)
a[i] = input.nextInt();
System.out.println(canSplit(a));
}
public static boolean canSplit(int[] a) {
int sum=0;
int n=a.length;
for (int i=0;i < n;i++) {
sum += a[i];
}
sum /= 2;
Arrays.sort(a);
int[] x=new int[n]; int sx=0;
int[] y=new int[n]; int sy=0;
int s=0;
for (int i=n - 1;i >= 0;i--) {
if (s + a[i] <= sum) {
s += a[i];
y[sy++] = a[i];
}
else
x[sx++] = a[i];
}
int suml=0,sumr=0;
for (int i=0;i < sx;i++)
suml += x[i];
for (int i=0;i < sy;i++)
sumr += y[i];
return suml == sumr;
}
}