看板 CSMU-MIS94 關於我們 聯絡資訊
寫在前面,這篇只是賺P幣的閒聊文XD (在星海版輸光了...) 如果認為有用的請自行轉載,因為我不會 這次上機考的三個題目如下: 除法 魔術方陣 逆‧猜數字 ===============除法================ input: 三個整數 x , y , z output: x 除以 y 取到小數點第 z 位 特殊要求: ● z 至少會到100以上(簡單說就是會故意超出Integer跟long的最大範圍) ○ 結果不用四捨五入 ● 在測試時,如果已經整除,後面就給他顯示一堆「0」沒差(因為考試時不會 出現這問題) Info: 想想你當初用直式運算計算除法的「每一個步驟」 (跟長除法比起來,我自己習慣說這是直式運算XD) 然後老師說這題理想10行內解決(不算必要的部分) ==============魔術方陣================ input: 一個正整數 N output: 一個 N*N 的魔術方陣 (所謂魔術方陣就是該矩陣中不管直橫斜相加都一樣) ex: N = 3 → 4 9 2 3 5 7 8 1 6 特殊要求: ● N 一定是奇數,但是 N 可能會到10幾20以上 ○ 在魔術方陣中的數字是 1~ N*N 且不重複(好像廢話囧) ● 1 一定要在矩陣的最下面中間 ○ 最後的輸出結果格式要對齊 演算法: X ← n-1 , y ← n/2取「下高斯」 將 1 放入 p[x,y] (就是把1放到矩陣最下面的中間) for W ← 2 to n*n do x ← x+1 , y ← y+1 if(x==n && y==n) or (p[x,y]已經有值) then x ← x-2 , y ← y-1 else if x >= n then x ← 最小的 x 且p[x,y]尚未放值 else if y >= n then y ← 最小的 y 且p[x,y]尚未放值 end if W 放入 p[x,y] end for Info: 不要想得太複雜,就是一直往右下就是了,然後有出界就繞一圈到另一邊去 ,有值了就往上一格。 理想值約20行可以寫完。 碎碎念: 這題是唯一有秀程式碼的,不過想參考的要注意 for(r=0;p[r][c]!=0;r++); ←你沒看錯,他就直接接分號,中間沒任何程式 只要你知道上面那行在作啥,這程式就很簡單了(照相手機真方便(茶)) 這 for 迴圈語法跟 c++ 一樣,要看懂應該不難。當然,你要硬背也可以XD。 難怪老師很放心的秀出程式(小聲) ==============逆‧猜數字================ (OS:好懷念當初猜數字就真的只是猜數字XD,因為這個跟平常所想的不一樣,所以 我多了一個「逆」字,只是自己的習慣) (A,B 所代表的意思應該不用再解說了吧囧) input: 在每次的猜測中,使用者需自行輸入 A , B output: 使用者自己所先設想的答案 特殊要求: ● 需在10次以內猜出 ○ 設想的答案是四位不重複數字(廢話) 演算法: P是0000-9999中所有可能答案的集合 x ← 0 , y ← 0 repert t ← 從 P集合 中任選其中一個元素 input x and y 從 P集合 中移除與 t 的相似度不是 xAyB 得元素 until x==4 Info: 簡單說就是假設我們猜「0123」 拿到的回傳值是「0A2B」 那我們便開始拿 「我們猜的數字」與「P集合中得元素」比對: 0123 , 0123 →4A0B,不是「0A2B」,刪除 0123 , 0124 →3A0B,不是「0A2B」,踢掉 : : : 0123 , 1045 →0A2B,是「0A2B」,留著 第一輪過濾完後,在猜第二次,在進行第二次過濾 一直猜到答案出現 理想值通常都在100行左右(跳真大) -- 「我站在這裡!像這樣活著!這就是我...生存的意義!!」            ~Tales of the Abyss~           生まれた意味を知るRPG -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.131.229.33 ※ 編輯: steven70101 來自: 140.128.142.226 (03/10 17:13)
passerlap:學長 可以請問一下第一行的判斷要怎樣才不會讓他超過矩 03/28 00:52
passerlap:陣範圍 03/28 00:54