?
Hallo!Ich habe einen Allgo.(siehe unten).Ich muß dazu die Ordnung der Laufzeit berechnen.
Ich habe folgendes raus bekommen,das der Allgo.eine Quadratische Ordnung hat.
also O(n2)O(n^2)O(n2).
Bekommt ihr das selbe raus?
#include <stdio.h>
#include <conio.h>
int main()
{
int m1[100][100];
int s,z,m;
int t1=1;
int k=0;
int ze=2;
int sp=2;
int merker=0;
int m2,m3,m4;
int i=1;
int h=0;
int j=1;
int n1=2;
int l1=1;
int l2=2;
int z1=1;
int g=0;
int g3=0;
int g5=0;
int n2=0;
do {
printf("------------Eingabe der Matrixwerte-----------------\n\n");
printf("Geben Sie die Spaltenlaenge der Matrix ein (max.5):");
scanf("%d",&s);
printf("Geben Sie die Zeilenlaenge der Matrix ein (max.5) :");
scanf("%d",&z);
}
while(s>=6||z>=6);
printf("\n----------------------------------------------------\n");
printf("Die Spaltenlaenge beträgt:%d\n",s);
printf("Die Zeilenlaenge betraegt:%d\n",z);
printf("----------------------------------------------------\n");
int t2=s*z;
//-----------Äußere----Schleife--------------------------------------------------
for(j=1;j<z+1;j++)
{
//-----------Innere----Schleife-------------------------------------------------
for(i=1;i<s+1;i++)
{
printf("Eingabe [%d von %d] -- Zeile %d Spalte %d:",t1,t2,j,i);
scanf("%d",&m1[i][j]);
if((m1[i][j]==0)||(m1[i][j]==1)){
t1+=1;
}
else {
printf("---------------------------------------------------------------------\n");
printf("Bitte Geben Sie nur eine 1 oder eine 0 als Zahl ein!\n");i=i-1;j=j;t1=t1;t2=t2;
printf("---------------------------------------------------------------------\n");
}}}
printf("Die Darstellung der Matrix:\n");
for(j=1;j<z+1;j++)
{
printf("\n");
for(i=1;i<s+1;i++)
{
printf("%d ",m1[i][j]);
}}
printf("\n\n");
//--------------Diagonale mit einsen in Teilmatrizen suchen------------------------
//-----------Äußere schleife---------------------------------------
for(z1=1;z1<s;z1=z1+2,l1=l1+2,l2=l2+2)
{
if(m1[l1][l1]&&m1[l2][l2]==1){h=h+1;}
if((h>=1)&&(s>=3)&&(z>=3)&&(m1[3][3]==1)){g3=1;}
if((h==2)&&(s==5)&&(z==5)&&(m1[5][5]==1)){g5=1;}
if(h==2){g=1;}
}
for(i=1;i<s+1;i=i+2,ze=i+1)//spalte
{
//-------Innere schleife---------------------------------------
for(j=1;j<z+1;j=j+2,sp=j+1)//zeile
{
if(j==1){sp=2;}
if(((m1[i][j])==1)&&((m1[ze][sp]))==1)k=k+1;
}}
printf("---------------------Teilmatrix-Belegung---------------------------\n\n");
for(i=1;i<s;i++,n1++)
{
n2=(n1*n1);
if((z%n1||s%n1)==0)
{
n2=(n1*n1);
if(((s*z)%n2)==0)
{
m=(s*z)/n2;
merker=1;
printf("[%d] [%dx%d] Teilmatrize(n), sind moeglich.\n",m,n1,n1);
}}
else
{
if(((s%n1)==0)&&((z%n1)!=0)&&((merker)==0))
{
m2=((z)-(z%n1))*(s)/n2;
printf("[%d] [%dx%d] Teilmatrize(n), sind moeglich.\n",m2,n1,n1);
}}
if(((z%n1)==0)&&((s%n1)!=0)&&((merker)==0))
{
m3=((s)-(s%n1))*(z)/n2;
printf("[%d] [%dx%d] Teilmatrize(n), sind moeglich.\n",m3,n1,n1);
}
else
{
if(((z%n1)!=0)&&((s%n1)!=0)&&((merker)==0))
{
m4=((s)-(s%n1))*((z)-(z%n1))/n2;
printf("[%d] [%dx%d] Teilmatrize(n), sind moeglich.\n",m4,n1,n1);
}}}
printf("\n");
printf("---------------------Matrix Diagonal Belegung----------------------\n\n");
printf("[%d] [2x2] Teilmatrize(n) nur mit Einsen in der Hauptdiagonale.\n",k);
printf("[%d] [3x3] Teilmatrize(n) nur mit Einsen in der Hauptdiagonale.\n",g3);
printf("[%d] [4x4] Teilmatrize(n) nur mit Einsen in der Hauptdiagonale.\n",g);
printf("[%d] [5x5] Teilmatrize(n) nur mit Einsen in der Hauptdiagonale.\n",g5);
printf("-------------------------------------------------------------------\n");
getch();return 0;
}