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 } }