查看單個文章
舊 2009-10-09, 02:01 AM   #17 (permalink)
cwvdavid
長老會員
 
cwvdavid 的頭像
榮譽勳章
UID - 476
在線等級: 級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時
註冊日期: 2002-12-06
住址: 天與地的夾縫
文章: 3106
精華: 0
現金: 5256 金幣
資產: 2034465 金幣
預設

第三題,
用公式來導...

A(0: m-1, 0:n-1)
已知 s1 = 0, s2 = 0

接著已知 A(3,2) 在1110, A(2,3) 在1115
且元素佔一個空間,意即 d = 1


帶入公式(我繼續用第一題的公式)
A(i,j) = A(0,0) + ((i - s1) * n * d) + (( j - s2 ) * d)
A(i,j) = A(0,0) + ((i - 0) * n * 1) + (( j - 0 ) * 1)
A(i,j) = A(0,0) + (i * n) + j
(以上是簡化後的結果)

A(3,2) = A(0,0) + (3 * n) + 2 = 1110
→ A(0,0) + (3 * n) + 2 = 1110
→ A(0,0) + (3 * n) = 1108
→ A(0,0) = 1108 - (3 * n)

A(2,3) = A(0,0) + (3 * n) + 2 = 1115
→ A(0,0) + (2 * n) + 3 = 1115
→ A(0,0) + (2 * n) = 1112
→ A(0,0) = 1112 - (2 * n)

再將2者 拿來比較
1108 - (3 * n) = 1112 - (2 * n)
1108 - n = 1112

可以得到 n = -4 ...(行數是-4.........)

...到這裡出了問題了
因此,這個陣列【並不是 以列為主

========================
算我倒楣!!(對你來說是幸運,可以看到用錯公式時的情形)
...
所以,再重算一次,改用另一個公式,以行為主

A(i,j) = A(0,0) + ((j - s2) * m * d) + (( i - s1 ) * d)
A(i,j) = A(0,0) + ((j - 0) * m * 1) + (( i - 0 ) * 1)
A(i,j) = A(0,0) + (j * m) + i
(以上是簡化後的結果)

A(3,2) = A(0,0) + (2 * m) + 3 = 1110
→ A(0,0) + (2 * m) + 3 = 1110
→ A(0,0) + (2 * m) = 1107
→ A(0,0) = 1107 - (2 * m)

A(2,3) = A(0,0) + (3 * m) + 2 = 1115
→ A(0,0) + (3 * m) + 2 = 1115
→ A(0,0) + (3 * m) = 1113
→ A(0,0) = 1113 - (3 * m)

1107 - (2 * m) = 1113 - (3 * m)
1107 = 1113 - m
m = 6 因此...陣列大小A(0 : m-1, 0 : n-1)

就是 A(0:5, 0: n-1)
由於題目只問到 A(1:4),所以 n 大於 4... n=5,6,7... n=無限大 也可以
(在這裡... n 用不到了...)

接下來,算一下A(0,0)的位置...
A(3,2) = A(0,0) + (2 * m) + 3 = 1110
A(3,2) = A(0,0) + (2 * 6) + 3 = 1110
A(3,2) = A(0,0) + 15 = 1110
A(0,0) = 1110 - 15 = 1095


A(2,3) = A(0,0) + (3 * m) + 2 = 1115
A(2,3) = A(0,0) + (3 * 6) + 2 = 1115
A(2,3) = A(0,0) + 20 = 1115
A(0,0) = 1115 - 20 = 1095

經由上面2個座標比對,確定A(0,0)是1095

最後,再計算 A(1,4)的值
A(1,4) = A(0,0) + (j * m) + i
A(1,4) = 1095 + (4 * 6) + 1
A(1,4) = 1095 + 25
A(1,4) = 1120 !!!!


(明明應該是你自己要看的公式,你自己都掃瞄了,也貼上來了
結果變成是我得幫你寫出來...........唉..........)

上面這一題的陷阱就是 【以行為主】 v.s 【以列為主】
而要弄的懂,最好是把第二題,也算一算....

也就是說:最好是從第一題開始算,算完之後再算第二題,再算第三題...
當你全部的習題都會算的時候,你這一章才能算是 真的了解了....

而你如果中間的題目就這麼跳過去,不看了,
那你後面的章節只會更痛苦.....

(很多資工科系,資管科系的學生  之所以會裁在程式設計的課程,
就是因為一開始沒弄懂,後面更痛苦,最後放棄....)
__________________
姜太公釣魚~ 願者上鉤
cwvdavid 目前離線  
送花文章: 4036, 收花文章: 2466 篇, 收花: 10141 次
回覆時引用此帖
有 2 位會員向 cwvdavid 送花:
9319074 (2009-10-09),magicwoo (2009-10-09)
感謝您發表一篇好文章