兩個數組a[N],b[N],其中A[N]的各個元素值已知,現求出b[i]賦值,b[i] = a[0]

兩個數組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.
知足時間複雜度On),空間複雜度O1ios

#include <iostream>

using namespace std;

#define N 10

int 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<N; i++) {
		b[0] *=a[i-1];
		b[i] = b[0];
	}
	b[0] = 1;
	for(int i=N-2; i>0; i--) {
		b[0] *= a[i+1];
		b[i] *=b[0];
	}
	b[0] *= a[1];

	//Test
	for(int i=0; i<N; i++) {
		cout<<b[i]<<" ";
	}
	cout << endl;
	getchar();
	return 0;
}

確實挺巧妙!利用了b[0]做爲一個temp,先計算i前半部分的乘積,再計算i後半部分的乘積,最後乘起來。數組

相關文章
相關標籤/搜索