// TRAI_23_t22_23.java SJ import java.util.*; public class TRAI_23_t22_23_pohja { public static void main(String[] args) { int N = 6; if (args.length > 0) N = Integer.parseInt(args[0]); Set> SS = new HashSet<>(); Random r = new Random(N + 1); System.out.println("Syötejoukot:"); for (int i = 0; i < N; i++) { Set S = new HashSet<>(); for (int j = 0; j < N; j++) { S.add(r.nextInt(N * 4 / 3)); } SS.add(S); System.out.println("S" + i + ": " + S); } Set tulos = leikkaus(SS); System.out.println("\nKaikkien leikkaus: " + tulos); System.out.println(); tulos = vainYhdessa(SS); System.out.println("Vain yhdessä: " + tulos); System.out.println(); } // main() /** * 22. Kirjoita algoritmi joka saa parametrinaan joukkojen joukon (Set>) ja joka * palauttaa joukkona (Set) kaikki ne alkiot jotka ovat kaikissa syötejoukoissa. Siis * leikkauksen. Vihje: iteraattori ja joukko-operaatiot. Mikä on algoritmisi aikavaativuus? * * @param SS syötejoukkojen joukko * @param alkiotyyppi * @return joukkojen leikkaus */ public static Set leikkaus(Set> SS) { Set tulos = new HashSet<>(); // TODO return tulos; } // vainYhdessa() /** * 23. Kirjoita algoritmi joka saa parametrinaan joukkojen joukon (Set>) ja joka pa- * lauttaa joukkona (Set) kaikki ne alkiot jotka ovat tasan yhdessä syötejoukoista. Ne * alkiot jotka ovat useammassa kuin yhdessä syötejoukoista eivät tule tulokseen. Älä muuta * syötejoukkoja. Vihje: foreach-läpikäynti ja kuvaus. Mikä on algoritmisi aikavaativuus? * * @param SS joukkojen joukko * @param joukkojen alkioiden tyyppi * @return kaikki ne alkiot jotka esiintyvät vain yhdessä joukossa */ public static Set vainYhdessa(Set> SS) { Set tulos = new HashSet<>(); // TODO return tulos; } // vainYhdessa() } // class