zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C语言连续子向量的最大和及时间度量实例

实例C语言 时间 最大 连续 向量 度量
2023-06-13 09:15:45 时间

本文实例分析了C语言连续子向量的最大和及时间度量,分享给大家供大家参考之用。具体方法如下:

#include<stdio.h>
#include<time.h>
#include<stdlib.h>

#defineSCALE3000
intmaxnum(inta,intb);
intmain(intargc,charconst*argv[])
{
FILE*fp;
fp=fopen("maximum.in","r");
//intx[]={1,12,-11,10,-65,54,22,-9,21,5,48,5,-8,-2,56,54,-88,-5,2,-8,554,-56,35,-55,555,-65,-545,-23,48,-5,88,-56,16,-8};
int*x=(int*)malloc(sizeof(int)*(SCALE+1));
intxi=SCALE,a=0,num_in=0;
while(xi--){
fscanf(fp,"%d",&x[a++]);
}
clock_tstart,end;

//***Algorithm-1cube***
start=clock();

intmax=0;
intlength=SCALE;
inti,j,k;
for(i=0;i<length;++i)
{
for(j=i;j<length;++j)
{
intsum=0;
for(k=i;k<=j;++k)
{
sum+=x[k];
}
max=maxnum(max,sum);
}
}

//longnum=10000000L;
//while(num--);

end=clock();
doubletimes=(double)(end-start)/CLOCKS_PER_SEC;
doubledend=(double)end;
printf("\n***Algorithm-1cube***\n");
printf("end:%f\n",dend);
printf("Timeconsuming:%f\n",times);
printf("%d\n",max);
//***Algorithm-2square***
start=clock();
max=0;
for(i=0;i<length;++i)
{
intsum=0;
for(j=i;j<length;++j)
{
sum+=x[j];
max=maxnum(max,sum);
}
}
end=clock();
times=(double)(end-start)/CLOCKS_PER_SEC;
dend=(double)end;
printf("\n***Algorithm-2square***\n");
printf("end:%f\n",dend);
printf("Timeconsuming:%f\n",times);
printf("%d\n",max);
//***Algorithm-3linear***
start=clock();
max=0;
intmax_end_here=0;

for(i=0;i<length;++i)
{
max_end_here=maxnum(max_end_here+x[i],0);
max=maxnum(max,max_end_here);
}
end=clock();
times=(double)(end-start)/CLOCKS_PER_SEC;
dend=(double)end;
printf("\n***Algorithm-3linear***\n");
printf("end:%f\n",dend);
printf("Timeconsuming:%f\n",times);
printf("%d\n",max);
free(x);
x=NULL;
return0;
}
intmaxnum(inta,intb)
{
returna>b?a:b;
}

感兴趣的朋友可以测试运行一下本文实例以加深理解。希望本文所述对大家C程序设计的学习有所帮助。