轉自:http://blog.csdn.net/shandianling/article/details/8785269
問題描述:兩個數組a[N],b[N],其中A[N]的各個元素值已知,現給b[i]賦值,b[i] = a[0]*a[1]*a[2]…*a[N-1]/a[i];
要求:
1.不準用除法運算
2.除了循環計數值,a[N],b[N]外,不準再用其他任何變量(包括局部變量,全局變量等)
3.滿足時間復雜度O(n),空間復雜度O(1)
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 void pr_arr(int s[],int len) 5 { 6 for(int i = 0 ; i <= len - 1 ; i++) 7 { 8 printf("%d \n",s[i]); 9 } 10 } 11 int main() 12 { 13 int a[]={2,3,7,23,6,5,1,23,89,23}; 14 int *b=(int*)malloc(sizeof(a)); 15 b[0]=1; 16 int len=sizeof(a)/sizeof(int); 17 int j,i; 18 for( i=1;i<len;i++) 19 { 20 b[i]=b[i-1]*a[i-1]; 21 } 22 for(j=len-2;j>=1;j--) 23 { 24 b[0]*=a[j+1]; 25 b[j]*=b[0]; 26 } 27 b[0]*=a[1]; 28 pr_arr(b,len); 29 return 0; 30 } 31
?
- #include?<stdio.h>??
- #include?<stdlib.h>??
- ??
- void?pr_arr(int?*s,char?len)??
- {??
- ????while(len--)??
- ????{??
- ????????printf("%d?\n",*s++);??
- ????}??
- }??
- int?main()??
- {??
- ???int?a[]={2,3,7,23,6,5,1,23,89,23};??
- ????int?*b=(int*)malloc(sizeof(a));??
- ????b[0]=1;??
- ????int?len=sizeof(a)/sizeof(*a);??
- ????int?j,i;??
- ????for(?i=1;i<len;i++)??
- ????{??
- ????????b[i]=b[i-1]*a[i-1];??
- ????}??
- ????for(j=len-2;j>=1;j--)??
- ????{??
- ????????b[0]*=a[j+1];??
- ????????b[j]*=b[0];??
- ????}??
- ????b[0]*=a[1];??
- ????pr_arr(b,len);??
- ????return?0;??
- ??
- }?
本文轉自夏雪冬日博客園博客,原文鏈接:http://www.cnblogs.com/heyonggang/p/3171558.html,如需轉載請自行聯系原作者