csnotes/338/lab2/can.java
2019-03-15 01:25:45 -07:00

56 lines
1.6 KiB
Java

// Alejandro Santillana
/*
* given an array of int values,
* is there a index in the array where the sum of values[0 .. index]
* is equal to (or balances) the sum of values[index+1 .. length-1]
* look at the examples below
* Your task: design and code the canBalance methods that returns true or false
* the program should be efficient.
* can you solve the problem without using nested loops? 1 loop? 2 loops?
* Then run the program to see if your method works correctly.
*/
public class CanBalance {
public static void main(String[] args) {
boolean r;
r = canBalance(new int[] {1, 1, 1, 2, 1});
System.out.println("canBalance( [1, 1, 1, 2, 1] ) should be true. You returned "+r);
r = canBalance(new int[] {2, 1, 1, 2, 1 });
System.out.println("canBalance( [2, 1, 1, 2, 1]) should be false. You returned "+r);
r = canBalance(new int[] {10, 10});
System.out.println("canBalance( [10,10]) should be true. You returned "+r);
r = canBalance(new int[] {10, 0, 1, -1, 10} );
System.out.println("canBalance([10, 0, 1, -1, 10]) should be true. You returned "+r);
r = canBalance(new int[] { 1});
System.out.println(" should be false. You returned "+r);
r = canBalance(new int[] {2, 1, 1, 1, 1});
System.out.println("canBalance([2, 1, 1, 1, 1]) should be true. You returned "+r);
}
public static boolean canBalance(int[] a) {
int sum_a = 0;
int sub_b = 0;
for(int i =0;i<a.length();i++) {
sum_a += a[i];
sum_b = 0;
for(int j =i+1;j<=a.length();j++) {
sum_b = a[j];
if(sum_b == sum_b) {
return true;
}
}
}
return false;
}
}