两个数组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).
\#include "stdafx.h"\
\
void Process( int \*a, int \*b, int n ){\
// 处理特殊情况.\
if( n == 1 ){\
b[0] = 1;\
return;\
}\
\
b[0] = a[0];\
for( int i = 1; i \< n; i++ ){\
b[i] = b[0];\
b[0] \*= a[i];\
}\
\
b[0] = a[n-1];\
for( int i = n - 2; i \> 0; i-- ){\
b[i] \*= b[0];\
b[0] \*= a[i];\
}\
}\
\
int main(){\
int a[] = { 10, 2, 3, 4, 5 };\
int b[5];\
Process( a, b, sizeof(a)/sizeof(int) );\
\
copy( b, b + 5, ostream\_iterator\<int\>(cout, " ") );\
cout \<\< endl;\
}\
/\*\
120 600 400 300 240\
请按任意键继续. . .\
\*/
可以去掉边界检查
尼玛 要检查