else if (m==k-1) f=1; else {
for(i=0;i<=k-2;i++) temp[i]=0; temp[k-1]=1; //初始化
for(i=k;i<=m;i++) //求出序列第k至第m个元素的值 {
sum=0;
for(j=i-k;j
f=temp[m]; }
return OK; }//fib
分析:通过保存已经计算出来的结果,此方法的时间复杂度仅为O(m^2).如果采用递归编程(大多数人都会首先想到递归方法),则时间复杂度将高达O(k^m). 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; 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':
score.totalscore+=result[i].score;
if(result[i].gender==0) score.malescore+=result[i].score; else score.femalescore+=result[i].score; break;
…… …… …… }
i++; }
for(i=0;i<5;i++) {
printf(\
printf(\ printf(\ printf(\ }
}//summary 1.19
Status algo119(int a[ARRSIZE])//求i!*2^i序列的值且不超过max