時間複雜度測試題2

兩個數組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 <iostream>
using namespace std;
#define N 5
int main()
{
	int a[5]={1,2,3,4,5};
	int b[5];
	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];

	return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章