exhausted search



  • hi,

    ich bekam in der letzten Stunde vor der Klausur folgenden Code mitgegeben:

    package exhaustedsearch;
    
    public class exhaustedsearch{
       proj[]g;
       int        n, i, maximalereinsatz, optimalergewinn, optimalereinsatz, momentanereinsatz;
       int        momentangewinn, start;
       int[]      optimum, momentan;
    
    public exhaustedsearch() {
       n = 7;  g = new proj[n]; optimum  = new int[n];   momentan = new int[n];
    //maximalereinsatz = 22;
       optimalergewinn=optimalereinsatz=momentangewinn=momentanereinsatz=start= 0;
       for(i=0;i<n;i++){
         optimum[i] =   momentan[i]=0;
         g[i]= new proj();
         }
    }
    public void wertbelegung(){
     /* g[0].setEinsatz(180);g[0].setGewinn(20);g[1].setEinsatz(240);g[1].setGewinn(45);
      g[2].setEinsatz(150);g[2].setGewinn(25);g[3].setEinsatz(60);g[3].setGewinn(15); /*/ 
      g[0].setEinsatz(9);g[0].setGewinn(9);g[1].setEinsatz(5);g[1].setGewinn(4);
      g[2].setEinsatz(8);g[2].setGewinn(10);g[3].setEinsatz(10);g[3].setGewinn(12);
      g[4].setEinsatz(6);g[4].setGewinn(9);g[5].setEinsatz(4);g[5].setGewinn(7);g[6].setEinsatz(7);
      g[6].setGewinn(8);  /**/}
    
    public void mit(int t){  momentan[t] = 1;}
    public void ohne(int t){   momentan[t] = 0;}
    
    public void exhausted(int x,int y,int z) {
      mit(z);
      optimumsverwaltung(x,y,z);
      if(z<n-1)      exhausted(x+g[z].getEinsatz(),y+g[z].getGewinn(),z+1);
      ohne(z);
      if(z< n-1)    exhausted(x,y,z+1);
    }
    
    public void optimumsverwaltung(int a,int b,int c){
      if((a+g[c].getEinsatz() <= maximalereinsatz)&&(b+g[c].getGewinn() > optimalergewinn)){
        optimalergewinn = b+g[c].getGewinn();    optimalereinsatz = a+g[c].getEinsatz();
        for(i= 0;i<n;i++)    optimum[i]=momentan[i];
       }
    }
    
    public void gibLoesungaus(){
      System.out.print("Optimale Lösung : ");
      for(i=0;i<n;i++) if(optimum[i]!=0) System.out.print(" "+i);
      System.out.println("\nEinsatz  : "+optimalereinsatz+"\nGewinn   : "+optimalergewinn);
    }
    
    public void ausfuehren(){
      wertbelegung();
      for(maximalereinsatz = 3;maximalereinsatz < 50;maximalereinsatz++){
        System.out.print("\n"+maximalereinsatz+"\n");
        exhausted(momentanereinsatz,momentangewinn,start);  gibLoesungaus();}
      }
    }
    

    Mit dem Hinweiß, dass es ein Verfahren ist zum berechenen des Maximalen Gewinns und dass ich es morgen in der Klausur können muss. Es so "exhausted search" heißen. Google findet dazu nichts. Die Klasse proj fehlt. Ich gehe davon aus, dass sie einfach eine Klasse mit int einsatz, int gewinn und getters und setters ist. Leider ist das völlig aus dem Zusammenhang gerissen, aber vielleicht könnt ihr mir ja helfen eine Zusammenhang herzustellen.

    Vielen Dank!



  • Von wem? Schreibt dein Lehrer/Prof so hässlichen Code?



  • Ehrlich??? schrieb:

    Von wem? Schreibt dein Lehrer/Prof so hässlichen Code?

    Hehe, ja


Anmelden zum Antworten