אלגוריתמי שנותן פתרון אלגנטי (אבל לאו דווקא עם ביצועים טובים).
public static boolean splitEqualSum(int[] a) { return helper(a, 0, 0, 0); }public static boolean helper(int[] a, int pos, long sum1, long sum2) { if (a.length == pos) return (sum1 == sum2); return helper(a, pos+1, sum1 + a[pos], sum2) || helper(a, pos+1, sum1, sum2 + a[pos])); }
|
לא בדקתי קומפילציה, הרבה זמן לא עבדתי עם ג'אווה ואני רגיל ל-++C אז כנראה יהיו לי פה טעויות סינטקטיות, אבל אני חושב שהרעיון אמור להיות ברור.
בהצלחה!
בברכה,
עידן