تقسیم آرایه به دو قسمت مساوی در جاوا

متدی بنویسید که یک آرایه دریافت و مشخص کند آیا آرایه را می توان طوری به دو قسمت تقسیم کرد که جمع اعداد قسمت اول و دوم با هم برابر باشد؟

/*
 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;
	}
}

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *




Enter Captcha Here :