Advertisement
Guest User

Untitled

a guest
Oct 1st, 2014
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.03 KB | None | 0 0
  1. public class V5
  2. {
  3. static public boolean isInPowerArray( String x, int i, String y )
  4. //
  5. // Notkun:  Þetta fall tekur streng "x" og býr til veldafylki
  6. //          úr öllum stökum strengsins í réttri stafrófsröð.
  7. //          Eftir það ber það saman hvort strengur "y" sé sá sami og
  8. //          sá strengur sem er í hólfi "i" þar sem "i" er int tala.
  9. //          Ef samanburðurinn stenst þá skilar fallið boolean "true", annars "false",
  10. //          og fallið gefur líka "false" ef talan "i" er ekki númer á hólfi í fylkinu.
  11. //
  12. // Fyrir:   x er strengur sem inniheldur aðeins stafina
  13. //          a,b,...,z (enska stafrófið).  Enginn
  14. //          stafur er endurtekinn í strengnum og
  15. //          stafirnir eru í stafrófsröð.  Lengd
  16. //          strengsins er því á bilinu 0..26.
  17. //          i er hvaða heiltala sem er, y er strengur.
  18. //
  19. // Eftir:   isInPowerArray(x,i,y) er satt þá og því aðeins að veldisfylki
  20. //          strengsins x hafi strenginn y í sæti i.
  21. //
  22. {
  23.     long xlengd = x.length(); // lengd strengsins x
  24.     long s = 1; // true or false, segir til um hvort index skrifast eða skippast
  25.     long q = 1; // counterinn fyrir hvenær S eigi að vera true or false
  26.     int sub = 0; // hvaða stak af strengnum er notaður til að setja í array
  27.     int slot = 0; // Stendur fyrir númer á hólfi í array-inu
  28.     String[] a = new String[(int) Math.pow(2,xlengd)]; // Fylki "a" sem hefur lengd 2^n þar sem n er lengd strengsins x
  29.     long alengd = a.length; //lengd fylkissins
  30.     long r = alengd/2; // gildi fyrir hversu hátt q þarf að fara
  31.     if(i<0 || i>=alengd)
  32.     {
  33.         return false;
  34.     }
  35.     //
  36.     // Notkun:  Breytir þannig að það sé "" en ekki "null" í öllum hólfum fylkissins
  37.     // Fyrir:   Öll hólfin í fylkinu innihalda "null"
  38.     // Eftir:   Öll hólfin í fylkinu eru tóm, þ.e. ""
  39.     //
  40.     for ( int j =0; j < alengd; j++)
  41.     {
  42.         a[j] = "";
  43.     }
  44.     //
  45.     // Notkun:  Setur stafina úr streng "x" í hólf fylkissins og raðar þeim þannig að þeir myndi öll hlutmengi stafanna
  46.     //          á sama hátt og maður myndi búa til sanntöflu
  47.     // Fyrir:   Fylkið er tómt og hefur lengdina 2^n þar sem n er lengd strengsins "x"
  48.     // Eftir:   Fylkið inniheldur öll hlutmengi stakanna í strengnum "x"
  49.     //
  50.     for(long u = 0; u <= (alengd*xlengd)-1; u++)
  51.     {
  52.         if(s>0)
  53.         {
  54.             a[slot] = a[slot] + x.substring(sub,sub+1); slot++;
  55.         }
  56.         else
  57.         {
  58.             slot++;
  59.         }
  60.         if(slot == alengd)
  61.         {
  62.             sub=sub+1; slot=0; r=r/2;
  63.         }
  64.         if(q >= (r))
  65.         {
  66.             q=1; s=-s;
  67.         }
  68.         else
  69.         {
  70.             q++;
  71.         }
  72.     }
  73.     //
  74.     // Notkun:  Þessar tvær forlykkjur sjá um að raða hólfum fylkissins í stafrófsröð
  75.     // Fyrir:   Hólfin í fylkinu eru ekki í stafrófsröð
  76.     // Eftir:   Hólfin í fylkinu eru í stafrófsröð
  77.     //
  78.     for(int w = 1; w<alengd; w++)
  79.     for(int j = w; j>0; j--)
  80.     if (a[j-1].compareTo(a[j]) > 0)
  81.     {
  82.         String t = a[j-1];
  83.         a[j-1] = a[j];
  84.         a[j] = t;
  85.     }
  86.     else break;
  87.     if (a[i].compareTo(y) == 0)
  88.     {
  89.         return true;
  90.     }
  91.     else
  92.     {
  93.         return false;
  94.     }
  95. }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement