Advertisement
Guest User

PowerSet

a guest
Oct 1st, 2014
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.51 KB | None | 0 0
  1. public class PowerSet{
  2. // Notkun:  b = isInPowerArray(x,i,y);
  3. // Fyrir:   x er strengur sem inniheldur aðeins stafina
  4. //          a,b,...,z (enska stafrófið).  Enginn
  5. //          stafur er endurtekinn í strengnum og
  6. //          stafirnir eru í stafrófsröð.  Lengd
  7. //          strengsins er því á bilinu 0..26.
  8. //          i er hvaða heiltala sem er, y er strengur.
  9. // Eftir:   b er satt þá og því aðeins að veldisfylki
  10. //          strengsins x hafi strenginn y í sæti i.
  11.   public static boolean isInPowerArray( String x, int i, String y )
  12.   {
  13.     String[] a = powerArray(x);
  14.     if(i >= a.length)
  15.     {
  16.       return false;
  17.     }
  18.     else if (i < 0)
  19.     {
  20.       return false;
  21.     }
  22.     return a[i].equals(y);
  23.   }
  24. // Notkun: a = powerArray(x);
  25. // Fyrir:  x er strengur sem inniheldur stafi
  26. //         a..z í stafrófsröð, núll eða fleiri.
  27. //         Hver stafur má í mesta lagi koma fyrir
  28. //         einu sinni.
  29. // Eftir:  a vísar á veldisfylki strengsins x.
  30.   public static String[] powerArray( String x )
  31.   {
  32.     int counter = 0;
  33.     String[] a = new String[(int) Math.pow(2,x.length())];  
  34.     //a[] er tómt fylki
  35.     for(int i=0; i<a.length; i++)
  36.     {
  37.       //0 <= i <= a.length, tæmum a[i] við hverja umferð;
  38.       a[i] = "";
  39.       counter = i;
  40.       for(int j=x.length()-1; j>=0; j--)
  41.       {
  42.         //0 <= j <= x.length, viljum ákveða hvar við eigum að skera strenginn
  43.         //og hvað hlutmengið verður stórt.
  44.         if(counter >= Math.pow(2,j))
  45.         {
  46.           a[i] = x.substring(j,j+1) + a[i];
  47.           counter = counter - (int) Math.pow(2,j);
  48.         }
  49.       }
  50.       //út kemur fullskipað veldisfylki
  51.     }
  52.     sort(a);
  53.     return a;
  54.   }
  55.  
  56. // Notkun: sort(a);
  57. // Fyrir:  a er strengjafylki.
  58. // Eftir:  a hefur verið raðað í vaxandi stafrófsröð.
  59.   public static void sort(String[] a)
  60.   {
  61.     for(int i = 0; i<a.length; i++)
  62.     {
  63.       //0 <= i <= a.length, bilið 0 til i inniheldur minnstu gildin
  64.       //í vaxandi röð, i til a.length þau stærstu í óþekktri röð.
  65.       for(int j = i+1; j< a.length; j++)
  66.       {
  67.         //0 <= i <= k <= a.length, bilið 0->i eru minnstu gildin í vaxandi röð
  68.         // a[i] er minnst á bilinu i til k og stærstu gildin eru í óþekktri röð
  69.         //á bilinu i til a.length
  70.         if(a[j].compareTo(a[i]) < 0)
  71.         {
  72.           String t = a[i];
  73.           a[i] = a[j];
  74.           a[j] = t;
  75.         }
  76.       }
  77.       System.out.print("{" + a [i] + "}");
  78.     }
  79.   }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement