正在加载图片...
for(i=k+1<=m计++j+)∥求出序列第k至第m个元素的值 temp[=2*sum-templI f-temp[m return OK i//fib 分析:k阶斐波那契序列的第m项的值fm}m-1}+im2J+.+m-k] m-1+fm-2+……+m-k]+fm-k-1]-m-k-4] =2* fm-1]-fm-k- 所以上述算法的时间复杂度仅为O(m)如果采用递归设计将达到O(k^m)即使 采用暂存中间结果的方法,也将达到O(m^2) 1.18 typedef struct( num male, female) gender; char schoolname;∥校名为'A"B',C"D或E typedef structi int malesco int femalescore int totalscore scoretype, void summary( resulttype result求各校的男女总分和团体总分,假设结果已经储 存在 result[]数组中 scoretype score[MAXSIZE] while(result[]. sport!=NULL) switch(result[]. schoolname) score[ 0].totalscore+=resultiscore if(result[]- gender==0)score[ 0]. malescore+=result iscore else score[ 0 ]. femalescore-+=result[].score Bsum=1; j=0; for(i=k+1;i<=m;i++,j++) //求出序列第 k 至第 m 个元素的值 temp[i]=2*sum-temp[j]; f=temp[m]; } return OK; }//fib 分析: k 阶斐波那契序列的第 m 项的值 f[m]=f[m-1]+f[m-2]+......+f[m-k] =f[m-1]+f[m-2]+......+f[m-k]+f[m-k-1]-f[m-k-1] =2*f[m-1]-f[m-k-1] 所以上述算法的时间复杂度仅为 O(m). 如果采用递归设计,将达到 O(k^m). 即使 采用暂存中间结果的方法,也将达到 O(m^2). 1.18 typedef struct{ char *sport; enum{male,female} gender; char schoolname; //校名为'A','B','C','D'或'E' char *result; int score; } resulttype; typedef struct{ int malescore; int femalescore; int totalscore; } scoretype; void summary(resulttype result[ ])//求各校的男女总分和团体总分,假设结果已经储 存在 result[ ]数组中 { scoretype score[MAXSIZE]; i=0; while(result[i].sport!=NULL) { switch(result[i].schoolname) { case 'A': score[ 0 ].totalscore+=result[i].score; if(result[i].gender==0) score[ 0 ].malescore+=result[i].score; else score[ 0 ].femalescore+=result[i].score; break; case 'B':
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有