已知陣列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...