1 / 18

OAQ 的期中考

OAQ 的期中考. 7101 寶石奇兵. 容許的排序演算法: Θ(n lg n) , ex: merge sort, quick sort, heap sort…. 排序的標準: (1) 分數愈大愈前面 (2) 時間愈短愈前面 (3) 字典排序愈小愈前面 最後再循序找名次就可以了。. 7101 寶石奇兵. 寫排序的時候,好像很容易錯亂 ?  不,其實框架都是固定的。 假設把這個 struct 當成 int 來看的話呢? node a[100], 只需要把 a[i] 和 a[j] 比大小就好 !!

page
Download Presentation

OAQ 的期中考

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OAQ的期中考

  2. 7101 寶石奇兵 • 容許的排序演算法:Θ(n lg n),ex: merge sort, quick sort, heap sort…. • 排序的標準: (1) 分數愈大愈前面 (2) 時間愈短愈前面 (3) 字典排序愈小愈前面 • 最後再循序找名次就可以了。

  3. 7101 寶石奇兵 • 寫排序的時候,好像很容易錯亂? 不,其實框架都是固定的。 • 假設把這個struct當成int來看的話呢? node a[100],只需要把a[i]和a[j]比大小就好!! 不如寫個function比大小

  4. 7101 寶石奇兵

  5. 7101 寶石奇兵 • 這樣的話,sort會變什麼樣子(以merge sort為例,依此類推) 原始的merge sort 修改的merge sort

  6. 7101 寶石奇兵 • 其實比對字串大小的話,可以愛用strcmp, intstrcmp ( const char * str1, const char * str2 ); • 字串比對可以多使用函式庫:(可參考以下網址) • http://www.cplusplus.com/reference/clibrary/cstring/

  7. 7102 完美洗牌2.0 • 這是錯的OAQ • N=26, 2*N = 52時是個特例(Dr. Hon上課時有證明) • 以6張牌來說:1必定跟著2的腳步,2必定跟著4… 1->2->4->1(cycle!!) 3->6->5->3(cycle!!) • 因此,我們要找的是各張牌在哪個cycle,再看走了幾步。

  8. 7102 完美洗牌2.0 • 怎麼去找cycle??????????????????????? 1個人必定只跟著1個人。

  9. 7103 切割木棍 • 其實就跟作業沒兩樣…. • 唯一要注意的case是N=1的時候,因為不用切割,所以成本是0。

  10. 7104, 7105 陣列和問題連發7108, 7109 棋盤問題連發 • 這題允許的方法: •  6個for迴圈,超級暴力OAQ • 加完之後每一格代表的意思是(1,1)~(i, j)的和 • 如果要找(i, j)~(k, q)的和的話? 橫的加 直的加

  11. 7104, 7105 陣列和問題連發7108, 7109 棋盤問題連發 • 淺咖啡的是重覆減掉的地方,所以要加回來。

  12. 7104, 7105 陣列和問題連發7108, 7109 棋盤問題連發 • 假設我們做事只做一半………. • 假設今天想知道第2行到第3行的和有沒有出現x,可以把2~3行的數字視為是一維的,如下: • 然後就可以使用一維的方法找x了(or最大最小值) 然後就不加直的了…

  13. 7104, 7105 陣列和問題連發7108, 7109 棋盤問題連發 • 因此,我們只要窮舉任2行,之後把他們之間的總和視為1-D的陣列就可以換成1D的case了。 • 窮舉的話只要, 1-D的方法是O(n),所以總共 • 這告訴我們,有些事做一半真的比較好@@....

  14. 7106 珍珠項鍊 • 這其實也是作業題,小小變化一下就可以了。

  15. 7109 消字遊戲 • 把LRUDFB視為[]{}(),就變成作業題目了XD

  16. 7010 少年湯姆的煩惱 • 這題真的讓湯姆的室友Bass煩惱很久… • 這題可以想成 • 似曾相識?? • 國中的時候老師有告訴我們,這個答案是這些座標的中位數。 • 因此我們只要求中位數就好了!!!!!!! • 特殊的情形是偶數的情形,因為題目有說取最小的,所以只要取中位數最左那個點就好了!!

  17. 題外話 • 好的排版有助於debug以及程式邏輯比較不會混淆~~

  18. OAQ • 請大家不要擔心分數問題。 • 有努力就會有相對的回報!!

More Related