1 #include <stdio.h> 2 #define MAX 1000 3 4 int f[]={1,3,5,7,9}; 5 int g[]={2,3,4,7,8}; 6 int len_f=sizeof(f)/sizeof(int); 7 int len_g=sizeof(g)/sizeof(int); 8 int sum=0; 9 void count(); 10 11 int main() 12 { 13 int result[MAX]={0}; 14 int i,j; 15 int flag_i; 16 for(i=0,j=0;i<len_f&&j<=len_g;) 17 { 18 if(j==len_g) //如果f[]中,从中间开始就都比g[]大,那么就加起来就可以了 19 { 20 sum+=result[i]; 21 for(j=i+1;j<len_f;j++) 22 { 23 result[j]=result[i]; 24 sum+=result[j]; 25 } 26 break; 27 } 28 if(i!=0 && flag_i==1) 29 { 30 result[i]+=result[i-1]; 31 flag_i=0; 32 } 33 if(f[i]>g[j]) 34 { 35 result[i]++; 36 j++; 37 } 38 else 39 { 40 flag_i=1; 41 sum+=result[i]; 42 i++; 43 } 44 } 45 printf("sum is %d\n",sum); 46 for(i=0;i<len_f;i++) 47 printf("%d ",result[i]); 48 printf("\n"); 49 }
1 void count() 2 { 3 int i=0,j=0; 4 while(i<len_f && j<len_g) 5 { 6 if(f[i]<=g[j]) 7 i++; 8 else 9 sum+=len_f-i,j++; 10 } 11 }