CSES - Tasajako

Annettuna on lista kokonaislukuja ja tehtäväsi on selvittää, onko luvut mahdollista jakaa kahteen ryhmään niin, että molempien ryhmien summa on sama.

Esimerkiksi kun lista on [9,4,8,7,6], mahdollinen ratkaisu on muodostaa ryhmät [8,9] ja [4,6,7]. Tällöin kummankin ryhmän lukujen summa on 17.

Voit olettaa, että jokainen luku on välillä 1 \dots 10^9 ja että listalla on enintään 16 lukua.

Python

Toteuta tiedostoon partition.py funktio check, joka ilmoittaa, onko luvut mahdollista jakaa tasan.

def check(t):
    # TODO

if __name__ == "__main__":
    print(check([3,4,5])) # False
    print(check([16,8,4,4])) # True
    print(check([9,4,8,7,6])) # True
    print(check([1,2,3,4,5,6])) # False
    print(check([1,2,3,4,5,6,7])) # True
    print(check([4,4,4,6,6])) # True

Java

Toteuta tiedostoon Partition.java metodi check, joka ilmoittaa, onko luvut mahdollista jakaa tasan.

public class Partition {
    public boolean check(int[] t) {
        // TODO
    }

    public static void main(String[] args) {
        Partition p = new Partition();
        System.out.println(p.check(new int[] {3,4,5})); // false
        System.out.println(p.check(new int[] {16,8,4,4})); // true
        System.out.println(p.check(new int[] {9,4,8,7,6})); // true
        System.out.println(p.check(new int[] {1,2,3,4,5,6})); // false
        System.out.println(p.check(new int[] {1,2,3,4,5,6,7})); // true
        System.out.println(p.check(new int[] {4,4,4,6,6})); // true
    }
}