两个数组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)
#includeusing namespace std;#define N 10int main(int argc, char *argv[]){ int a[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int b[N] = {}; b[0] = 1; for(int i=1; i 0; i--) { b[0] *= a[i+1]; b[i] *=b[0]; } b[0] *= a[1]; //Test for(int i=0; i
确实挺巧妙!利用了b[0]作为一个temp,先计算i前半部分的乘积,再计算i后半部分的乘积,最后乘起来。