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?
我想應該是這樣的
global variable如下
int mult, zero_time;
struct element{
float value;
int time;
} arry[n];
INITIAL(){
for(int i = 0 ; i < n ; i++)
arry[i].value = 0;
mult = 1;
zero_time = 0;
}
write(k,m){
arry[k].value = m / mult;
arry[k].time = zero_time;
}
read(k){
return (arry[k].time != zero_time? 0 : arry[k].value*mult);
}
multiplyall(n){
if(!n) return ;
mult *= n;
}
ZEROALL(){
zero_time ++;
}
題目說 multiplyall(n) 若n=0時則回傳error的用意應該是
當執行過mult=0後,之後再執行multplyall就無意義了吧...再怎麼樣結果都會是0!!
所以用一個時間去判斷是否執行過zeroall就好了!
這是小弟胡亂猜想的解法,有錯請鞭!!XD
--
複製下面藍色區域並且貼上會斷線,請勿嘗試唷^_<
qqqqqqqqqqqqqg
y
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.243.51.73
※ 編輯: perry0627 來自: 111.243.51.73 (09/08 22:08)
→
09/09 09:54, , 1F
09/09 09:54, 1F
→
09/09 09:54, , 2F
09/09 09:54, 2F
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章