• 開春美妝祭
  • 今日66折
  • 天天BUY

培養與鍛鍊程式設計的邏輯腦:世界級程式設計大賽的知識、心得與解題分享 [第二版]

  • 定價:520
  • 優惠價:7364
  • 優惠期限:2020年04月09日止
  • 運送方式:
  • 臺灣與離島
  • 海外
  • 可配送點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
  • 可取貨點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
載入中...
 

內容簡介

CPE! CPE! CPE!


  就要考CPE了,仍毫無頭緒?那麼多的題目,要怎麼準備啊?

  雖然已經有資料結構和基礎演算法的底子,嘗試解考古題時,仍然腦袋中一片空白!完全發揮不出原本的實力!

  您有以上的困擾嗎?那就快來看看這本書。

  CPE的考題大多來自於各大程式設計競賽,題目眾多,若不先經過專家的整理與歸類,確實難以準備!

  本書分析了各大程式設計競賽的題目,將之區分類別與難易度,按照循序漸進的方式,引導您逐步解題,提示您看到哪類題目時,應該如何思考,可以套用那些資料結構與演算法,讓您在CPE考試中無往不利!

  延續第一版暢銷的寫法,在[第二版]中,作者新增了約1/4的內容,這些內容大多集中於中級篇及高級篇,並且納入了簡單的人工智慧搜尋解法,引入heuristic function h(n)的觀念,以剪枝、A*與IDA*來解出時間要求更嚴格的考題。對於沒有學習過類似解法的考生而言,幫助著實不小。

  您還在煩惱如何在CPE考試中取得高分嗎?或者您想要參加國際型的程式競賽以取得升學的加分優勢呢?本書將協助您、完成您的夢想!

本書特色

  ■ 內容淺顯易懂,在有趣愉快的學習下重新釐清重要概念
  ■ 依困難度和關聯性的方式編排,讓讀者分階段進行學習
  ■ 透過考古題與原創題目的試作,挑戰自我程式設計能力
  ■ 只需具備基礎的程式設計概念,本書就能輕鬆閱讀上手
  ■ 匯集了作者參加程式設計比賽所取得的解題技巧和經驗
 

 

作者介紹

作者簡介

秋葉拓哉


  1988年出生。2007年進入東京大學就讀。以iwi的身份活躍於程式編譯大賽中。主要的戰績為TopCoder Open 2010第9名、ACM-ICPC World Finals 2012第11名、TopCoder Open 2012 Algorithm第4名等。

岩田陽一

  1988年出生。2007年進入東京大學就讀。以wata的身份活躍於程式編譯大賽中。主要的戰績為Google Code Jam 2009第3名、TopCoder Open 2010 Marathon冠軍、IPSC 2010個人組冠軍等。

北川宜稔

  1988年出生。2007年進入東京大學就讀。以kita_masa的身份活躍於程式編譯大賽中。主要的戰績為ICPC World Finals 2010第16名等。
 

 

目錄

01 開始挑戰吧!但在這之前?準備篇
1-1 程式設計比賽是什麼?
1-2 有哪些比賽呢?
1-3 本書的學習方式
1-4 該如何提交解答呢?
1-5 以有效率的演算法為目標
1-6 輕鬆的暖身運動

02 從基礎開始吧!初級篇
2-1 一切的基礎「完全搜尋法」
2-2 突飛猛進!「貪心法」
2-3 記錄值並重新利用的「動態規劃法」
2-4 加工資料並記憶的「資料結構」
2-5 這個與那個其實都是「圖」
2-6 解決數學問題的要訣
2-7 挑戰看看GCJ的問題吧(1)

03 大幅提升程度!中級篇
3-1 不是只能搜尋值而已喔!「二分搜尋法」
3-2 嚴選!常用技巧(1)
3-3 操縱各式各樣的資料結構
3-4 掌握動態規劃法!
3-5 藉由流水解決問題的「網路流量」
3-6 處理平面.空間的「計算幾何」
3-7 挑戰看看 GCJ 的問題吧(2)

04 超越巔峰!高級篇
4-1 更加複雜的數學問題
4-2 找出遊戲的必勝法!
4-3 圖論大師的修鍊之道
4-4 嚴選!常用技巧(2)
4-5 別出心裁的智慧探索
4-6 分開求解再合併!「分治法」
4-7 華麗地操作字串
4-8 挑戰看看 GCJ 的問題吧(3)
 

 

詳細資料

  • ISBN:9789862017777
  • 叢書系列:單行本
  • 規格:平裝 / 432頁 / 17 x 23 x 2.16 cm / 普通級 / 單色印刷 / 二版
  • 出版地:台灣
 

內容連載

Page1
 
首先讓我們從簡單的Ants問題開始
 
問題
 
n隻螞蟻在長度為L公分的竿子上以每秒1公分的速度行走。螞蟻走到竿子底端便會摔到竿子底下。另外,竿子很窄,不能讓兩隻螞蟻同時走過,所以當兩隻螞蟻相遇時,就必須各自往反方向走回去。關於每一隻螞蟻,只知道牠們位於從竿子左邊算起距離xi的地方,但卻不清楚牠們是朝哪個方向前進。請分別求出所有螞蟻摔到竿子底下的最短時間和最長時間。
 
輸入
 
L = 10
n = 3
x = {2,6,7}
 
輸出
 
min = 4(左、右、右)
max = 8(右、右、右)
 
Page2
 
我們首先會想到的解決方式,就是嘗試所有螞蟻的所有前進方向之演算法。想要進行這種完全搜尋法時,就要利用遞迴函數(詳細的說明請參閱2-1節)。每隻螞蟻的前進方向各有兩種,有n隻螞蟻就有2×2×2⋯×2種走法。雖然n有時候並不會太大,但指數函數會隨著n的增加而急速增加。
 
完全搜尋法程式的執行時間也會隨著n的增加急速膨脹。這種量級的執行時間通常叫做「指數時間」。指數時間的演算法無法處理過大的輸入規模。
 
那麼,就來想想有沒有比完全搜尋法更有效率的解決方法吧。首先,最短時間的情況應該是所有螞蟻都朝同方向前進。實際上,在這樣的情況下,任何螞蟻將不會遇到其他螞蟻,所以不會有其他情況能夠更快結束程式。
 
Page3
 
接著,再來想想哪種情況會讓程式時間拉得最長,而螞蟻的相遇情況又會是如何吧。
 
其實即使把螞蟻看成是「直接交錯而過」也不會有問題。只要這樣一想,就可以把所有螞蟻都當成是獨立活動,只要求取各螞蟻到達竿子邊緣的最大距離,就能求出時間的最大值了。
 
如果要這樣演算的話,不管是求最大值還是最小值,都只需要調查所有螞蟻一次就行了,而演算法複雜度會是O(n)。從「n≦1000000」這個限制可知,這個演算法一定來得及在限制時間內完成,這樣就解決這個問題了。
 
這個題目可說是考驗參賽者發想力的最佳問題。有些問題就像這樣,乍看之下很難,但想一下就會發現它意外地簡單。

最近瀏覽商品

 

相關活動

  • 不可不讀的機器學習面試寶典
 

購物說明

若您具有法人身份為常態性且大量購書者,或有特殊作業需求,建議您可洽詢「企業採購」。 

退換貨說明 

會員所購買的商品均享有到貨十天的猶豫期(含例假日)。退回之商品必須於猶豫期內寄回。 

辦理退換貨時,商品必須是全新狀態與完整包裝(請注意保持商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性,切勿缺漏任何配件或損毀原廠外盒)。退回商品無法回復原狀者,恐將影響退貨權益或需負擔部分費用。 

訂購本商品前請務必詳閱商品退換貨原則 

  • 2020 防疫展
  • 即將截止!三采兒童國際書展66折起
  • 2020 大學出版社聯展

訂閱電子報

想獲得最新商品資訊,請訂閱免費電子報