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;}