Re: [問題] 設計特殊的陣列
※ 引述《wsx02 ()》之銘言:
: http://ppt.cc/71it
: 大意是說 呼叫multiplyall(n)會把陣列所有的元素都乘以n 但只花O(1)
: 然後(b)提到的zeroall()我想應該就呼叫multiplyall(0)就可以了吧?
: 請問multiplyall(n)應該用怎樣的設計方式 讓他只花O(1)呢?
: 謝謝!
: 我自己偷吃步的想法是 雖然題目說要改變陣列中全部的element 可是沒說要全部印出來
: 只說這個陣列要能支援initial(),write(k,m),read(k),multiplyall(n)而已
: 不知道可不可以令一個全域變數temp 把multiplyall(n)的n指定給temp
: 當陣列要read的時候把element乘以temp?
不是偷吃步的方法啊,這就是設計一組資料結構:
a) 用大概C的語言,這個陣列起碼包含一些全域變數:
double a[];
long long len = N;
double mul;
void INITIAL() {
a = (double*)malloc(sizeof(double) * len);
mul = 1;
}
void multiplyall(double n) {
if (abs(n) < 0.000001) exit(ERROR);
mul *= n;
}
double read(long long k) {
return a[k] * mul;
}
void write(long long k, double m) {
a[k] = m / mul; //所以不可以multiplyall(0)把 mul 設定為0.
}
至於 ZEROALL() 嘛, 有點難.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 36.226.94.15
→
09/08 00:14, , 1F
09/08 00:14, 1F
→
09/08 00:40, , 2F
09/08 00:40, 2F
推
09/08 20:22, , 3F
09/08 20:22, 3F
→
09/09 02:53, , 4F
09/09 02:53, 4F
→
09/09 02:53, , 5F
09/09 02:53, 5F
→
09/09 04:49, , 6F
09/09 04:49, 6F
推
09/09 09:49, , 7F
09/09 09:49, 7F
→
09/09 09:52, , 8F
09/09 09:52, 8F
→
09/09 11:42, , 9F
09/09 11:42, 9F
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章