![]() |
懂java陣列的人來幫忙一下吧,感恩 [圖已經附上]
假設有一陣列A,其A(0,0)與A(2,2)的位址分別在(1024)8與(1244)8,求A(3,3)的位址(以8進位表示)。(PS.1024和1244後面那個8是8進位)
有一二維陣列A(0:m-1,0:n-1),假設A(3,2)在1110,而A(2,3)在1115,若每個元素佔一個空間,請問A(1,4)所在的位址。 (還有兩題,可是都是矩陣圖,因為我家沒掃瞄機貼上圖,所以要等我去圖書館在貼上去)。 到時我會在補充。 ==分隔線== 如圖圈起來的部分題目: ![]() (ps.我事先有算過,算不出來,才來問大家的。) |
請告訴我你的算法(我需要知道你的事先算過的內容是什麼, 你算出了什麼, 才知道怎麼幫你算)
|
引用:
課本1 1024(8)= 644(10) 1244(8) = 676(10) 後來不知怎麼開頭算了,無頭緒。 ==分隔線== 課本3 A(0:m-1,0:n-1) u(1)=m , u(2)=n 以A(3,2)算 以列 1110+(1-3)*n*1+(4-2)*1 => 1110-2n+2 => 1112-2n 以行 1110+(4-2)*m*1+(1-3)*1 => 1110+2m-2 => 1108+2m 以A(3,2)算 以列 1115+(1-2)*n*1+(4-3)*1 => 1115-n+1 => 1116-n 以行 1115+(4-3)*m*1+(1-2)*1 => 1115+m-2 => 1113+m 我只算這樣,而且不知道開頭方法對不對 ==分隔線== 課本4 我不知道怎麼算,而且max最大值和min最小值我不懂0.0,我只貼老師教的類似東西。 (如圖,點圖放大) ![]() ==分隔線== 課本5 如同4說明,但是老師沒教正方形的,只交上三角形和下三角形 |
第一題...
是1204 以及 1244.... 不是1024 跟 1244 (2者差距太大了, 所以你才會算不出來) =========================== 第三題,如果我沒有弄錯的話, 二維陣列為 (0:5, 0:無限大) 請自行用公式去推算... [0,0]為1095 [5,0]為1100 [0,1]為1101 [5,1]為1106 由左至右,由上往下計算...每一個元素佔1個空間 [0,0],[1,0],[2,0],[3,0],[4,0],[5,0] [0,1],[1,1],[2,1],[3,1],[4,1],[5,1] [0,2],[1,2],[2,2],[3,2],[4,2],[5,2] [0,3],[1,3],[2,3],[3,3],[4,3],[5,3] [0,4],[1,4],[2,4],[3,4],[4,4],[5,4] ..... [0,9],[1,9],[2,9],[3,9],[4,9],[5,9] ... ... [0,100],[1,100],[2,100],[3,100],[4,100],[5,100] |
第四題,
Max 以及 Min 說明 Max ( 1, 5) 所得到的值是 5 Max ( 5, 1) 所得到的值是 5 Min (1, 5) 所得到的值是 1 Min (5, 1) 所得到的值是 1 因此,當 A21 要存在 A12時, 我們得把 21 的 2跟1對調,讓比較小的值排前面,比較大的值排後面 ==到這裡可能你還看不懂=============== 題目的意思是, 要你用Max以及Min來寫出 A(i,j) 的位置....的公式 如果不使用Max, Min 那就是要寫程式... 語法:
IF i < j Then '如果 i 小於 j (我就不公佈了,你再想一想吧) |
引用:
引用:
第三題我看不懂你說明的 5 和無限大 和一堆數字怎蹦出來的0.0 第四題的話,我可以用程式解答嘛?? max和mix函數不知道是什麼東西。。。 那第五題?:on_47: 抱歉喔,因為我對這個很不懂。(我是轉學生) 老師上課只交課本例題而已,和用她的方式教法。 假如你要第二章的東西的話,我可以用掃瞄機掃給你。 |
你現在是大二嗎?
(你原本唸什麼科系?, 轉學...有一併轉科系嗎?) ========================== 用Max以及Min來寫出 A(i,j) 的位置 指的就是 A( Min(i,j) , Max(i,k) ) 當i=5, j=3的時候,存放的位置為 A(3,5) 當i=3, j=5的時候,存放的位置為 A(3,5) 以上是答案...... 建議你盡量抽空去 請教老師,只要你有找時間去問,老師一定會教你 (上課時間就不用舉手發問了,下課再問!!) 畢竟老師不是神,沒辦法知道你們學習上出現什麼問題,以及遇到什麼瓶頸, 如果你們不去問,那就會永遠卡在那裡, 最後就都變成是老師教的不好............. |
引用:
我會去問老師一下,我貼我課本東西給你參考一下,就大概知道我們在教什麼了(晚點附上) |
我是資管出身的,你不用特地貼了...
那些我都學過了(以前是用 C語言,但資料結構的觀念都是相同的) ================================= 第三題的數字...(你少了大學一年級,更基礎的電腦概念,學起來會很苦) 基礎觀念說明 以Java進行說明: 已知有1個陣列為 A[5], 則...系統中儲存的是 A[0], A[1], A[2], A[3], A[4] 已經有1個二維陣列是A[x][y],x為5, y為5 實際陣列大小就是A[5][5] 因此系統中儲存的會是 A[0,0],A[1,0],A[2,0],A[3,0],A[4,0] (y=0......然後x=0, x=1, x=2, x=3, x=4) A[0,1],A[1,1],A[2,1],A[3,1],A[4,1] (y=1......然後x=0, x=1, x=2, x=3, x=4) A[0,2],A[1,2],A[2,2],A[3,2],A[4,2] (y=2......然後x=0, x=1, x=2, x=3, x=4) A[0,3],A[1,3],A[2,3],A[3,3],A[4,3] (y=3......然後x=0, x=1, x=2, x=3, x=4) A[0,4],A[1,4],A[2,4],A[3,4],A[4,4] (y=4......然後x=0, x=1, x=2, x=3, x=4) (以上要先看的懂才能繼續往下講,所以...你先吸收一下吧) (真的看不太懂的話,打開Excel,把Excel的那些方格 當成是陣列的方格... 會比較能體會) |
引用:
==分隔線== 第三題我回去再用EXCEL推看看。(因為人在學校圖書館) ==分隔線== 那第一題是否要用課本公式算?還是要用其他公式去推論?? ==分隔線== 我課本的東西(4張圖): http://yfrog.com/5g78657243jx 沒有病毒,請放心 |
剛剛用excel 推論,
看的懂了 |
請問一下你這個是哪一題的??
用Max以及Min來寫出 A(i,j) 的位置 指的就是 A( Min(i,j) , Max(i,k) ) 當i=5, j=3的時候,存放的位置為 A(3,5) 當i=3, j=5的時候,存放的位置為 A(3,5) 以上是答案...... |
Max, Min...那是第四題的答案
你可以用 Excel 在A1 輸入 1 在A2 輸入 6 在C1 輸入 【=Max(A1,A2)】 在C2 輸入 【=Min(A1,A2)】 然後試著去變更 A1 跟 A2 的值... (就能體會 Max 跟 Min 的用處了) |
關於第三題,我是看懂了,然後接下來?
你打的:(以上要先看的懂才能繼續往下講,所以...你先吸收一下吧) |
那第一題有公式可以導算嗎??
有的話我大概就會推了 ==分隔線== 等等,第一題該不會是這樣推吧?? a(0.0)在1204 a (2.2) 在1244 兩者之間差20 結果a(3.3)就是1264 這樣對不對?? (以上是我想的) 我同學那邊討論答案是1264 第三題我剛剛看出來了, 用排列是下階梯方式,每下一個相差5,所以1115+5=1120,就是A(1,4)的數字 這樣對吧?? |
第一題
A(0,0)位於 1204(8)= 644(10) A(2,2)位於 1244(8)= 676(10) 2者的位置相差了 32.... 而題目並沒有提到 每個元素佔用多少空間,因此一般來說, d=1 接著我們得先算出 陣列的大小 依照你的書本...第二張圖的公式 若陣列大小為:A(s1 : u1, s2 : u2) 則... 陣列的列數為:u1 - s1 + 1 陣列的行數為:u2 - s2 + 1 而計算位址A(i,j)的公式為 A0 + ((i - s1) * n * d) + (( j - s2 ) * d) 或是 A0 + ((i - s2) * m * d) + (( j - s1 ) * d) 用第一種來算的話... 因為A(0,0)一般來說是最小的位置,再加上課本沒有額外設定 負數的座標,所以可以確定 s1=0, s2=0 將A(2,2)帶進公式計算 676 = 644 + ((2 - s1) * n * 1) + (( 2 - s2 ) * 1) 32 = (2 - s1)n + 2 - s2 30 = (2 - s1)n - s2 0 = (2 - s1)n - s2 - 30 0 = 2n - 30 n = 15 (行數有15行) 最後可以知道陣列大小為 A(0:m, 0:14) 也因為題目只問到A(3,3),所以可以假設 m為4 ~ 無限大... 也就是說整個陣列是... A(0:3, 0:14) A(0:4, 0:14) A(0:5, 0:14) ... ... A(0:100, 0:14) ... A(0:無限大, 0:14) 故...一個一個列出來的話... A(0:0) = 644 A(0:1) = 645 ... A(0:10) = 654 ... A(0:14) = 658 A(1:0) = 659 A(1:1) = 660 ... A(1:14) = 673 A(2:0) = 674 A(2:1) = 675 A(2:2) = 676 ... A(2:14) = 688 A(3:0) = 689 A(3:1) = 690 A(3:2) = 691 A(3:3) = 692(10進位) = 1264(8進位) 如果要直接套公式... 計算位址A(3,3)的公式 A0 + ((i - s1) * n * d) + (( j - s2 ) * d) = 644 + ((3 - 0) * 15 * 1) + (( 3 - 0 ) * 1) = 644 + 45 + 3 = 692(10進位) = 1264(8進位) ================================ 我在算題目時,基本上是不用公式的, 但你現在學的還沒有到程式部份,還是理論,所以必須要去了解公式在寫些什麼... 不然後面什麼都不用玩了... 課本的題目都是依順序排列的, 第一題沒有算出來,第二題一定看不懂,第三題也不用看了... 後面就都完了... (公式看不懂要問老師, 不要什麼都不問, 再不然問妹妹也可以呀) |
第三題,
用公式來導... 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 【以列為主】 而要弄的懂,最好是把第二題,也算一算.... 也就是說:最好是從第一題開始算,算完之後再算第二題,再算第三題... 當你全部的習題都會算的時候,你這一章才能算是 真的了解了.... 而你如果中間的題目就這麼跳過去,不看了, 那你後面的章節只會更痛苦..... (很多資工科系,資管科系的學生 之所以會裁在程式設計的課程, 就是因為一開始沒弄懂,後面更痛苦,最後放棄....) |
引用:
上面的公式算法講完, 接下來講一般的(當你不知道公式,而又需要了解陣列計算結果時, 用Excel來模擬是最方便的) Excel 是由 A,B,C,D..以及1,2,3,4所組成的表格, 其呈現方式就如同二維陣列一樣 A1, B1, C1, D1..... A2, B2, C2, D2..... A3, B3, C3, D3..... 因此,用Excel來模擬陣列配置時,就可以配置出 [A,1], [B,1], [C,1], [D,1], [E,1], [F,1], [G,1], [H,1]... [A,2], [B,2], [C,2], [D,2], [E,2], [F,2], [G,2], [H,2]... [A,3], [B,3], [C,3], [D,3], [E,3], [F,3], [G,3], [H,3]... [A,4], [B,4], [C,4], [D,4], [E,4], [F,4], [G,4], [H,4]... [A,5], [B,5], [C,5], [D,5], [E,5], [F,5], [G,5], [H,5]... ... ...(上面的A1, B1, C1,就是下面陣列的 A[0,0], A[1,0], A[2,0] ...已經知道A[2,3]是1115以及A[3,2]是1110時,就把數字填到上面的Excel方格內 ...填入 ...再直接用人工去一格一格的算 ... A[0,0],A[1,0],A[2,0],A[3,0],A[4,0] .... A[0,1],A[1,1],A[2,1],A[3,1],A[4,1] .... A[0,2],A[1,2],A[2,2],A[3,2],A[4,2] .... A[0,3],A[1,3],A[2,3],A[3,3],A[4,3] .... A[0,4],A[1,4],A[2,4],A[3,4],A[4,4] .... 我再幫你畫一張圖好了(用Excel模擬的) ![]() |
第5題
A(1) = A[1,1] A(2) = A[1,2] A(3) = A[2,2] A(4) = A[2,1] =========== A(5) = A[1,3] A(6) = A[2,3] A(7) = A[3,3] A(8) = A[3,2] A(9) = A[3,1] =========== A(10) = A[1,4] A(11) = A[2,4] A(12) = A[3,4] A(13) = A[4,4] A(14) = A[4,3] A(15) = A[4,2] A(16) = A[4,1] =========== A(17) = A[1,5] A(18) = A[2,5] A(19) = A[3,5] A(20) = A[4,5] A(21) = A[5,5] A(22) = A[5,4] A(23) = A[5,3] A(24) = A[5,2] A(25) = A[5,1] ... ... 以此類型,自己找一下數值之間的共通性吧 |
第一和第三題我是用推論的方法求出來的,
可以看15樓我說的。 第五題我是知道他是反英文字母L的累加,可是不知怎算而已。 因為老師是用點題目的方式叫我們寫作業0.0 我把我課堂的狀況用E貓告訴老師了,而且老師知道我的學習狀況了。 |
我1、3題我用我的推論方法寫出來交作業好了,
讓老師知道我學習狀況,你的解答,我還是會參考一下 |
所有時間均為台北時間。現在的時間是 07:57 PM。 |
Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.
『服務條款』
* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *