Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class KMB_8 {
- //Klassi väljad
- private Object[] a; //käideldav hulk
- private int n; //mitmest hulga a esimesest teha alamhulki
- private KMB_8 gen_väike; //generaator n-1 korral
- private Object[] väike; //tulemus generaatorist n-1 korral
- private int olek;
- //Klassi väljad
- //Olekud
- static final int TEHA_VÄIKSEMATE_GENERAATOR = 0;
- static final int TEHA_UUS_VÄIKE = 1;
- static final int TEHA_PIKENDATUD = 2;
- static final int AMMENDATUD = 3;
- //Olekud
- //Konstruktor
- public KMB_8(Object[] a, int n){
- this.a = a;
- this.n = n;
- olek = TEHA_VÄIKSEMATE_GENERAATOR;
- }
- //Konstruktor
- public Object[] next(){
- //Järjekordne alamhulk
- //@return (antakse välja jrk hulga a alamhulk (massiivina)
- //Baasjuhud
- if (olek == AMMENDATUD){
- return null;
- }
- if (n == 0){
- olek = AMMENDATUD;
- return new Object[0]; //anda välja tühihulk
- }
- //Baasjuhud
- for (int i=0;i<n;i++){
- switch(olek){
- case TEHA_VÄIKSEMATE_GENERAATOR:
- gen_väike = new KMB_8(a,n-1);
- case TEHA_UUS_VÄIKE:
- väike = gen_väike.next();
- if(väike == null){ //väiksemad (ja nende pikendused) kõik juba välja antud
- olek = AMMENDATUD;
- return null;
- }
- //potentsiaalselt veel mingi mant vahele slaidilt
- olek = TEHA_PIKENDATUD;
- return väike;
- case TEHA_PIKENDATUD:
- Object[] pikendatud = new Object[väike.length+1]; //pikendatud k.....
- System.arraycopy(väike, 0, pikendatud, 0, väike.length); // kopeerida väike ==> pikendatud algusesse
- pikendatud[pikendatud.length-1] = a[n-1]; //a viimane element ==> pikendatud viimasele kohale
- olek = TEHA_UUS_VÄIKE;
- return pikendatud;
- default:
- System.out.println("KMB_8:next():Olek vale:" + olek);
- System.exit(0);
- }
- }
- }
- public static void main(String[] args) {
- MIS MA SIIA KIRJUTAN?
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement