All pastes #9657 Raw Edit

stawegawgh

public cpp v1 · immutable
#9657 ·published 2005-04-16 11:07 UTC
rendered paste body
#include <iostream>#include <stdlib.h>using namespace std;class naiv{    public:        int a[1000];         naiv(){            for (int i=0;i<1000;i++){        a[i]=(((rand())%4793)-2396);        }        }        float summe(int i, int j){        float diesumme=0;         for (int durchlauf=i;durchlauf<=j;durchlauf++) {diesumme = diesumme+a[durchlauf];}        return diesumme;    }        void dasmax(){        float max=a[0];        float hilf=0;        for (int i=0;i<1000;i++){            for (int j=i;j<1000;j++){                hilf=summe(i,j);                if(hilf>max){max=hilf;}            }                    }            cout << "maximale summe: " << max;        system("PAUSE");    }        };class normal{    public:        int a[1000];         normal(){            for (int i=0;i<1000;i++){        a[i]=(((rand())%4793)-2396);        }        }        void dasmax(){        float max=a[0];        float hilf=0;        for (int i=0;i<1000;i++){            hilf =0;            for (int j=i;j<1000;j++){                hilf+=a[j];                if(hilf>max){max=hilf;}            }                    }            cout << "maximale summe: " << max;        system("PAUSE");    }        };class divconq{    public:            int a[1000];         divconq(){            for (int i=0;i<1000;i++){        a[i]=(((rand())%4793)-2396);        }        }    //diese max fkt hat parameter wg. rekursion    float dasmax(int i, int j){        if(i==j)return a[j];        int mitte = (i+j)/2;        float maxI=dasmax(i,mitte);        float maxIII=dasmax(mitte+1,j);        float maxII1=0,maxII2=0,maxII,hilf=0;        for(int b=(j/2);b>=i;b--){            hilf+=a[b];            if(hilf>maxII1){maxII1=hilf;}        }        hilf=0;        for(int b=j;b>j/2;b--){            hilf+=a[b];            if(hilf>maxII2){maxII2=hilf;}        }        maxII=maxII1+maxII2;        if(maxI>=maxIII)                if (maxI>=maxII)return maxI;                else return maxII;        else if(maxII>=maxIII)return maxII;        else return maxIII;             }                     }; class dyn{    public:        int a[1000];         dyn(){            for (int i=0;i<1000;i++){        a[i]=(((rand())%4793)-2396);        }        }        void dasmax(){        int x=a[0],y=a[0];        for(int i=0;i<1000;i++){                x=(x+a[i])>a[i] ? x+a[i]:a[i];                y=y<x?x:y;        }        cout << "maximale summe: " << y;        system("PAUSE");    }        };   int main(int argc, char *argv[]){naiv dernaivealg;dernaivealg.dasmax();normal dernormalealg;dernormalealg.dasmax();divconq derdivconqalg;cout << "maximale summe: " << derdivconqalg.dasmax(0,999);system("PAUSE");dyn derdyn;derdyn.dasmax();   system("PAUSE");	  return 0;}