转自: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,如需转载请自行联系原作者