C6

import java.util.Arrays;


public class VariacieSOpakovanim {

        int[] pole;
        int[] hodnoty;

        public VariacieSOpakovanim(int[] hodnoty, int dlzka) {
                this.hodnoty = hodnoty;
                pole = new int[dlzka];
        }

        public void vypis() {
                System.out.println(Arrays.toString(pole));
        }

        public void generuj(int odIndexu) {
                if (odIndexu == pole.length) {
                        vypis();
                        return;
                }
                for (int i = 0; i < hodnoty.length; i++) {
                        pole[odIndexu] = hodnoty[i];
                        generuj(odIndexu+1);
                }
        }

        public static void main(String[] args) {
                VariacieSOpakovanim v = new VariacieSOpakovanim(new int[] {2, 5, 7, 9}, 3);
                v.generuj(0);
        }
}
public class Lupici {

        int[] pole;
        int[] lup;

        int najRozdiel = Integer.MAX_VALUE;
        private int[] vysledok;

        public Lupici(int[] lup) {
                this.lup = lup;
                pole = new int[lup.length];
        }

        private void overRozdelenie() {
                int prvy = 0;
                int druhy = 0;

                for (int i = 0; i < pole.length; i++) {
                        if (pole[i] == 0)
                                prvy += lup[i];
                        else
                                druhy += lup[i];
                }
                if (najRozdiel > Math.abs(prvy - druhy)) {
                        najRozdiel = Math.abs(prvy - druhy);
                        vysledok = pole.clone();
                }
        }

        public void generuj(int odIndexu) {
                if (odIndexu == pole.length) {
                        overRozdelenie();
                        return;
                }
                for (int i = 0; i < 2; i++) {
                        pole[odIndexu] = i;
                        generuj(odIndexu+1);
                }
        }

        public void vypisVysledok() {
                System.out.print("Prvy dostane: ");
                for (int i = 0; i < vysledok.length; i++) {
                        if (vysledok[i] == 0)
                                System.out.print(lup[i] + " ");
                }

                System.out.print("\nDruhy dostane: ");
                for (int i = 0; i < vysledok.length; i++) {
                        if (vysledok[i] == 1)
                                System.out.print(lup[i] + " ");
                }

        }
        public static void main(String[] args) {
                Lupici l = new Lupici(new int[] {5, 7, 20, 17, 14, 3});
                l.generuj(0);
                l.vypisVysledok();
        }

}
public class Lupici {

        int[] pole;
        int[] lup;
        int pocet;

        int najRozdiel = Integer.MAX_VALUE;
        private int[] vysledok;

        public Lupici(int pocet, int[] lup) {
                this.lup = lup;
                pole = new int[lup.length];
                this.pocet = pocet;
        }

        private void overRozdelenie() {
                int[] lupici = new int[pocet];
                int rozdiel = 0;

                for (int i = 0; i < pocet; i++) {
                        for (int j = 0; j < pole.length; j++) {
                                if (pole[j] == i)
                                        lupici[i] += lup[j];
                        }
                }

                for (int i = 0; i < lupici.length; i++) {
                        for (int j = 0; j < lupici.length; j++) {
                                rozdiel = Math.max(Math.abs(lupici[i] - lupici[j]), rozdiel);
                        }
                }
                if (najRozdiel > rozdiel) {
                        najRozdiel = rozdiel;
                        vysledok = pole.clone();
                }
        }

        public void generuj(int odIndexu) {
                if (odIndexu == pole.length) {
                        overRozdelenie();
                        return;
                }
                for (int i = 0; i < pocet; i++) {
                        pole[odIndexu] = i;
                        generuj(odIndexu + 1);
                }
        }

        public void vypisVysledok() {
                for (int i = 0; i < pocet; i++) {
                        System.out.print(i+1 + ". dostane: ");
                        for (int j = 0; j < vysledok.length; j++) {
                                if (vysledok[j] == i)
                                        System.out.print(lup[j] + " ");
                        }
                        System.out.println();
                }

        }

        public static void main(String[] args) {
                Lupici l = new Lupici(6, new int[] { 5, 7, 20, 17, 14, 3 });
                l.generuj(0);
                l.vypisVysledok();
        }

}
import java.util.Arrays;

public class NepriatelskeCisla {
        int[] pole;
        int[] hodnoty;

        public NepriatelskeCisla(int[] hodnoty) {
                this.hodnoty = hodnoty;
                pole = new int[hodnoty.length];
        }

        public void vypis() {
                System.out.println(Arrays.toString(pole));
        }

        public void generuj(int odIndexu) {
                if (odIndexu == pole.length) {
                        vypis();
                        return;
                }

                for (int i = 0; i < hodnoty.length; i++) {
                        if (mozemPridat(hodnoty[i], odIndexu)) {
                                pole[odIndexu] = hodnoty[i];
                                generuj(odIndexu + 1);
                        }
                }
        }

        public boolean mozemPridat(int pridavanaHodnota, int index) {
                for (int i = 0; i < index; i++) {
                        if (pole[i] == pridavanaHodnota)
                                return false;

                }
                if (index == 0) {
                        return true;
                }
                if (pridavanaHodnota % pole[index - 1] == 0
                                || pole[index - 1] % pridavanaHodnota == 0) {
                        return false;
                }
                return true;
        }
        public static void main(String[] args) {
                NepriatelskeCisla v = new NepriatelskeCisla(new int[] { 2, 4,
                                8,16 });
                v.generuj(0);
        }

}
import java.util.Arrays;

public class VariacieBezOpakovania {
        int[] pole;
        int[] hodnoty;

        public VariacieBezOpakovania(int[] hodnoty, int dlzka) {
                this.hodnoty = hodnoty;
                pole = new int[dlzka];
        }

        public void vypis() {
                System.out.println(Arrays.toString(pole));
        }

        public void generuj(int odIndexu) {
                if (odIndexu == pole.length) {
                        vypis();
                        return;
                }

                for (int i = 0; i < hodnoty.length; i++) {
                        if (mozemPridat(hodnoty[i], odIndexu)) {
                                pole[odIndexu] = hodnoty[i];
                                generuj(odIndexu + 1);
                        }
                }
        }

        public boolean mozemPridat(int pridavanaHodnota, int index) {
                for (int i = 0; i < index; i++) {
                        if (pole[i] == pridavanaHodnota)
                                return false;
                }
                return true;
        }

        public static void main(String[] args) {
                VariacieBezOpakovania v = new VariacieBezOpakovania(new int[] { 2, 5,
                                7, 9 }, 3);
                v.generuj(0);
        }
}

import java.util.Arrays;


public class VariacieSHOpakovaniami {

        int[] pole;
        int[] hodnoty;
        int h;

        public VariacieSHOpakovaniami(int[] hodnoty, int dlzka, int h) {
                this.hodnoty = hodnoty;
                pole = new int[dlzka];
                this.h = h;
        }

        public void vypis() {
                System.out.println(Arrays.toString(pole));
        }

        public void generuj(int odIndexu) {
                if (odIndexu == pole.length) {
                        vypis();
                        return;
                }

                for (int i = 0; i < hodnoty.length; i++) {
                        if (mozemPridat(hodnoty[i], odIndexu)) {
                                pole[odIndexu] = hodnoty[i];
                                generuj(odIndexu + 1);
                        }
                }
        }

        public boolean mozemPridat(int pridavanaHodnota, int index) {
                int pocitadlo = 0;
                for (int i = 0; i < index; i++) {
                        if (pole[i] == pridavanaHodnota)
                                pocitadlo++;

                }
                if (pocitadlo == h) {
                        return false;
                }
                return true;
        }

        public static void main(String[] args) {
                VariacieSHOpakovaniami v = new VariacieSHOpakovaniami( new int[] { 2, 5,
                                7, 9 }, 3, 2);
                v.generuj(0);
        }

}

Chemický sklad PALMA prijala, treba len zmeniť názov triedy na "source"

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class ChemickySklad {

        int n;
        int m;
        Map<Integer,ArrayList<Integer>> d = new HashMap<Integer, ArrayList<Integer>>();
        int [] pole;
        int maxPocet = 0;

        public void generuj(int index){
                if(index== pole.length){
                        spracuj();
                        return;
                }

                if(mozemPridat(index)){
                        pole[index]=1;
                        generuj(index+1);
                }
                pole[index]=0;
                generuj(index+1);
        }

        public boolean mozemPridat(int index){
                ArrayList<Integer> zoznam= d.get(index);
                if (zoznam ==null)
                        return true;

                for (int i = 0; i < index; i++) {
                        if(pole[i]==1 && zoznam.contains(i))
                                return false;
                }
                return true;
        }

        public void spracuj(){
                int pocet =0;

                for (int i = 0; i < pole.length; i++) {
                        if(pole[i]==1)
                                pocet++;
                }
                if (pocet > maxPocet)
                        maxPocet = pocet;
        }

        public void vypis(){
                System.out.println(maxPocet);
        }


        public void nacitaj(){
                Scanner s = new Scanner(System.in);
                n = s.nextInt();
                pole = new int[n];
                m = s.nextInt();
                s.nextLine();
                for(int i = 0;i<m;i++){
                        String riadok = s.nextLine();
                        String[] dvojica = riadok.split(" ");
                        Integer x = new Integer(dvojica[0]);
                        Integer y = new Integer(dvojica[1]);
                        if(d.containsKey(x)){
                                d.get(x).add(y);
                        }
                        else{
                                ArrayList<Integer> yka = new ArrayList<Integer>();
                                yka.add(y);
                                d.put(x,yka);
                        }
                        if(d.containsKey(y)){
                                d.get(y).add(x);
                        }
                        else{
                                ArrayList<Integer> xka = new ArrayList<Integer>();
                                xka.add(x);
                                d.put(y,xka);
                        }
                }
        }

        public static void main(String[] args){
                ChemickySklad chs = new ChemickySklad();
                chs.nacitaj();
                chs.generuj(0);
                chs.vypis();
        }

}
import java.util.Arrays;

public class DamyNaSachovnici {

        int[] damy;

        public DamyNaSachovnici(int pocetDam) {
                damy = new int[pocetDam];
        }

        public void rozdel(int index) {
                if (index == damy.length) {
                        System.out.println(Arrays.toString(damy));
                        return;
                }

                for (int i = 0; i < damy.length; i++) {
                        if (neohrozuje(index, i)) {
                                damy[index] = i;
                                rozdel(index + 1);
                        }

                }
        }

        public boolean neohrozuje(int index, int i) {
                for (int j = 0; j < index; j++) {
                        if (damy[j] == i)
                                return false;
                        if (damy[j] + j == i + index)
                                return false;
                        if (damy[j] - j == i - index)
                                return false;
                }
                return true;
        }

        public static void main(String[] args) {
                DamyNaSachovnici dns = new DamyNaSachovnici(6);
                dns.rozdel(0);
        }
}