一道很有意思的演算法題

2021-06-13 17:14:41 字數 589 閱讀 3561

已知陣列a[n],由陣列a[n]構造陣列b[n],構造方法如下:

product = a[0]*a[1]*...a[n];

b[i] = product/a[i],      0<= i <=n;

要求如下:

1.不能使用除法。

2.不能宣告新的變數,不能申請新的記憶體。

3.時間複雜度為o(n)。

簡單分析:

1.不能使用除法的話必須使用累乘。

2.由於時間複雜度的限制計算b[i]的值時,應從已經計算出來的數值開始計算。

演算法:1.i=0,b[i]賦初值1.

2.如果 i == 0,

b[0] = 1;

b[n-1]  = 1

如果 i  !=  0 ,

b[0] = b[0]*a[i-1];

b[i] = b[0]*b[i];

b[n-1] = b[n-1]*a[n-i];

b[n-i-1] = b[n-i-1]*b[n-1]

3.     如果i < n-1,執行2.

4.b[0] = b[0]*a[n-1]

b[n-1] = b[n-1]*a[0]

一道很有意思的題目

先列出 然後再開始解析 include stdafx.h include using namespace std class a class b public a void seta a data,int idx int tmain int argc,tchar argv for int i 0 i...

分享一道很有意思的演算法題目

題目 有100盞燈和100個開關,剛開始的時候等全是滅的,someone第一輪按下所有開關 開的按一下變滅,滅的按一下變開 第二輪隔乙個按一下 偶數個按 第三輪隔2個 3的倍數個按 求第100輪之後有多少盞燈是亮的。本題有三個層次的解法 第乙個層次是暴力解法,即迴圈100輪,分別記錄每一盞等的狀態,...

一道有意思的邏輯題

在一條街上,有5座房子,噴了5中顏色。每個房子住著不同國籍的人。每個人喝不同的飲料,抽不同品牌的香菸,養不同的寵物。問題是 誰養魚?30分 2.瑞典人養狗 3.丹麥人喝茶 4.綠色房子在白色房子左邊 5.綠房子主人喝咖啡 6.抽pallmall香菸的人養鳥 7.黃色房子的主人抽dunhill香菸 8...