Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Længste plateau En klassisk problemstilling (Gries, 1981) - og her i Java!!! Denne opgave drejer sig om at bestemme længden af det længste plateau i en.

Lignende præsentationer


Præsentationer af emnet: "Længste plateau En klassisk problemstilling (Gries, 1981) - og her i Java!!! Denne opgave drejer sig om at bestemme længden af det længste plateau i en."— Præsentationens transcript:

1 Længste plateau En klassisk problemstilling (Gries, 1981) - og her i Java!!! Denne opgave drejer sig om at bestemme længden af det længste plateau i en sekvens. Et plateau i en sekvens er en delsekvens, hvor elementerne er ens. Det længste plateau er den længste delsekvens, hvor alle elementerne er ens. I denne opgave er sekvensen givet ved et array. Elementerne er heltal, og vi betragter kun et sorteret array. Ex.: I arrayet int[] a = {1,2,2,3,4,5,5,5,6,7,8,8,8,8,9,9}; er det længste plateau {8, 8, 8, 8}, og har længden 4. Nedenfor er angivet et lille program, som afprøver metoden longestPlateau(-).

2 public static void main(String[] args){ int[] a = {1,2,2,3,4,5,5,5,6,7,8,8,8,8,9,9}; int n= a.length; System.out.println("Det længste plateau har længden: ” + longestPlateau(a,n)); } public static int longestPlateau( int[] a, int n) { int p= 0; int i= 0; //etablering af invariant while(i!=n) { //Bevarelse af invarianten??? i++;//skridt mod terminering }//while return p; } Postbetingelse: p == længden af længste plateau i a[0..n-1] Invariant: (erstat konstant med var.) 0<=i<=n && p == lgd. af hidtil længste plateau i a[0..i-1]. Vagt i!=n

3 public static int longestPlateau(int[] a, int n){ //pre n>0 && a er sorteret (<=) //post a[0..n-1] har et plateau af lgd. p // && a[0..n-1] har ikke et plateau af lgd. p+1 int p= 0; int i= 0; while(i!=n) {//invariant: 0<=i<=n && p == lgd. af længste // plateau i a[0..i-1] if(a[i]==a[i-p]) p++; i++; }//while return p; } a: 0n-1ii-p p

4 Øvelse Binærsøgning - iterativ løsning: Skriv koden på den hårde måde. Kan du få det til at virke? Prøv at formulere specifikationer (anvend evt. array-billeder, så specifikationen kun bliver "halvformel"). Prøv at formulerer en invariant, og skriv så algoritmen vha. checklisten for løkker. Var det ikke meget nemmere?


Download ppt "Længste plateau En klassisk problemstilling (Gries, 1981) - og her i Java!!! Denne opgave drejer sig om at bestemme længden af det længste plateau i en."

Lignende præsentationer


Annoncer fra Google