相信有在解CPE、UVA或高中生程式問題的朋友,身邊應該都會有這樣的初學者會問這樣的問題-「程式要怎麼寫?」
是自學程式語言的人不談,大部分的人在學校學了很多基礎的知識和語法,課本的範例照著打都會,稍微修改也還OK,但是真正看到"只有"程式題目時,腦筋卻一片空白不知道要如何下手。
所以小K就想說來整理一下自己寫程式的心得和概念。
解一題程式最重要的3個步驟:
1、解讀題目
2、想出解法
3、解題
(一) 解讀題目
我想大部分的人在第一關就會先被打槍(笑)~因為UVA題目都是英文敘述,光是那串英文看到就頭痛更不要說去了解了。但是殘念......這是一定要克服的喔!如果真的看不懂可以先去高中生程式那邊看看,都有中文敘述,或是網路也有些專門將題目翻成中文的網站可以參考。
(題目翻譯查詢:Lucky貓園地)
不過小K在這邊還是建議大家要試著去練習看英文題目,而UVA的英文敘述有一半其實都是
紅色框框是我會先去看的部分,先看輸入的測資是甚麼樣子的~再看要我們輸出(計算)甚麼;
之後再去看藍色框框Description的部分,看這題題目有哪些需要特別注意的限制條件。
(通常有數字的那行英文就是重點,看那幾行就對了,例如:up to 1000 digits)
有些題目還會有所謂的"故事背景",我選的這題剛好沒有,通常故事背景直接跳過沒有關係。
(二) 想出辦法
接下來是整個過程中最重要的~
解讀完題目後,先不要急著寫程式,請先思考這題題目要「怎麼解?」
寫程式最重要的就是邏輯思考,而且要Step by Step。
回想一下,以前在解數學題目時,我們是怎麼寫答案的??是不是先思考要用甚麼算式,之後在將計算過程一步一步寫下來?
所以寫程式也是如此。
先想出解這個題目的辦法後,再將這些想法轉換成程式碼一步一步清楚的打出來。
而要把想法轉換成Code也是要具備一些基礎能力,關於這個部份我再另外寫篇文章,今天最主要是分享解題的過程而已~(笑)
(三)解題
最後就是開始解題拉~
上一個步驟是先思考解決辦法,但是辦法行不行得通還是要實際去做才會知道。
如果跟答案相差不多,那基本上就是某些地方做個微調就好了;但如果出來的解果跟題目要求的差了十萬八千里,那就要再重新思考那個地方出錯。
所以我所寫的解題紀錄都會分成三部分:
解題觀念:就是上面的第二個步驟-想出辦法。
解題步驟:就是解題,用了甚麼工具或語法解題。(這部分我會再另外整理)
舉例(EX):清楚的解釋我的程式是怎麼執行的。而要整理出這個部分,就要有清楚的step by step思考邏輯,因為畢竟是要一步一步的解說過程阿~
大概就是這樣,這是我在解題時的過程,希望有幫到大家囉!
By 小K
沒有留言:
張貼留言