創作內容

4 GP

程式語言建立自信系列-序言

作者:李兒諳│2016-06-02 14:08:45│巴幣:8│人氣:215
夏知饋:程式語言,建立自信...
萬袑衽:看不出來哪邊沒自信了,不是有些狂嗎?
夏知饋:我想說的是,人才能建立自信吧!!

呀,別在意那種細節啦

夏再嚇:魔鬼藏在細節中
吳鶴以:好啦,說是要提升自信,具體做法是?

解題

夏知饋:嗯...跟卜勿尤老師的方法一樣
吳鶴以:這是當然的,對寫程式沒自信就是因為題目解不出來
吳鶴以:所以要有自信,就是要透過解題

解題是第一階段啦!!
目前想到的話還有二三四階段

其實二三四階段沒什麼順序性
因為就是各自獨立的題目
能解出一個的話
通常也有解出別題的實力
或者是解出別題的可能性相較於解不出來的人高
但其實也不能保證就是了

第二階段是自製解題系統
第三階段是組合語言對應
第四階段是人工智慧、機器學習與多媒體生成等專門應用

不過還是先從第一階段做起吧
雖然四階段都做不太到

解題的缺點是
較沒機會組建較大型的系統
但會寫程式的話有極高機率會自行嘗試
像Javascript網頁遊戲系列
但自行亂寫較大的系統
反過來倒不見得會解題
原因...等看到題目就知道了!!
很多時候不見得能理解題目要做什麼
但寫系統,雖然大,但有較高機率了解各部份要解哪些題目
雖然臺灣是有自己的解題網站
不過為了避免麻煩
就直接用外國題目吧
有些解題網站的優點是有分章節或難度漸進的
也就是解法類似的題目擺在一起
而反過來說就是有些浪費生命

因為通常一題感覺解得出來就好
就是不太會才需要想辦法解出來
跟考試通常同一題型不會出太多同樣道理
類似題目擺在一起的好處就是可以熟悉跟練速度啦!!

總之選用網站是
用法改天再說
我要先回憶一下帳號密碼跟慣用寫法!!

基本上可以先挑綠色條較長(比例高)跟total user高的來解
有時範例測試資料沒問題
但因為實際上用的測資很多組
有些可能會有輸入異常的情形
要手動修正、檢測(這就是我不太喜歡解題的原因)
像第一題
100-3n+1 problems
我記得如果第二個值比第一個值小的話
要調換之後再算的樣子
所以第一題的通過率還蠻低的(部分原因也是因為是第一題)

解題網站通常用C語言、C++
因為有些題目的特徵是運算時間限制
所以有些多程式語言ACM網站
其實碰上些時間限制較嚴苛的題目還是得用C、C++

http://www.codewars.com的好處就是
用的語言是ACM較不常見但又還算實用的
不過缺點是答案不是很好找
但解出來後能看到其它人的答案(Haskell比較需要這功能)
雖然自行編譯後能過的話大概就能過
通常情況沒ACM那麼整人

其實一開始不太建議直接寫ACM(通常我說ACM就是指online judge)
一開始要解的話也可以先從北京的開始解起
先從北京的開始解起
優點就是確保至少能解一題
其實以前我第一次寫也是從北京的開始寫
那時臺灣高中生解題系統出來了沒都還不清楚
不過北京的題目好像擺放有些變化
有些忘記,以前好像有區塊是建議新手解的
然後還有區塊是放北京自創競賽題(當然這個我是沒寫)
現在的擺放可能跟直接去解Uva online judge類似吧!!

不過個人還是要建議
可以先搜尋ACM solutions或者是題目名稱
有時會看到別人的解法
直接從程式碼看哪邊不懂

例如說新手可能不知道
要用char question_input[80];
while ( scanf ("%s",question_input) != EOF ){}類似這種寫法
數字的話可以直接寫↓這樣
int i;
while ( scanf ("%d, &i) != EOF ){}
然後也不太會用mem開頭的指令跟字串指令

其實自己練習寫ACM的話
建議用win+R,cmd
先用notepad寫好輸入資料
然後編譯程式後產出.exe
在對應的路徑底下(有該程式.exe的路徑)
輸入
程式名.exe < 輸入資料檔名.副檔名 > 輸出檔名.副檔名
<跟>印象中在這邊叫重導向運算子(redirection operators)
這幾乎算是作業系統中shell程式(可想成命令提示字元)必備功能
Linux印象中也有,但符號是否一樣就忘了
<是輸入重導向運算子,把後面接的檔案當作啟動程式後的鍵盤輸入資料
>是輸出重導向運算子,把程式顯示在螢幕上的資料寫入到>接的檔案名稱
之後再
type 輸出檔名.副檔名
就能顯示檔案內容
type就是用來顯示文字檔內容用的指令

例如,底下這是hello_world.cpp:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char name_input[80];
printf("type your name:\n");
scanf("%s",name_input);
printf("%s, hello!!",name_input);
return 0;
}
編譯產生.exe檔後

在命令提示字元底下
檔案命名時小心些,避免洗掉重要的檔案內容
echo 123 > test_a.txt
上述這行是偷懶建立測試資料的方式
hello_world < test_a.txt > out_test.txt
然後type out_test.txt
畫面上呈現的是
type your name:
123, hello!!

此外看現有答案的好處是-
有的時候
若不太確定題目在做什麼
可以藉由程式碼來推測出來
也算是種練習!!
大概就這樣
有機會的話我在挑幾題解看看
也許會挑要用到較罕見又常見的資料結構題
(雖然那種題目跟許多一般題我也很常解不出來)

夏知饋:學長印象中不是很喜歡解題
夏知饋:怎麼突然想到要解題?

逛知乎後覺得解題好像還是有其必要性
所以就去書店買解題的書來看
不過別誤會
我還是不會想回去或者說繼續在臺灣的資訊科系深造
(其實外國的也不去,因為不喜歡解題、語文能力弱、習慣臺灣飲食、窮、應該是有工作了)
因為太多浪費時間跟茫然的題目了
解了一學期之後對許多名詞還是一無所知(動態規劃、模擬退火、隨機演算法等)
不小心被那纏上的話
或者說去唸的話就會被纏上了
真的會沒時間做其它事情、閒暇時的自行研究

吳鶴以:解了一學期後對那一無所知是正常的
吳鶴以:因為會大量解題的科目大概是程式設計
吳鶴以:而資料結構與演算法大多是以研究課本為主
吳鶴以:資料結構與演算法若動真格玩ACM
吳鶴以:與其說學生受不了,不如說教授跟助教會首當其衝
吳鶴以:嗯,以此方面來想的話確實蠻浪費時間的
夏再嚇:教授跟助教不能只把問題丟了就跑嗎?

教授也許可以,但助教大概就沒辦法了
其實這世界上
很重視ACM的,也就大概是對岸、俄國了
ACM在對岸(俄國不清楚,不過2012~2016聖彼得堡有些嚇人),跟奧運有得拼啊
重視是說,在國內有一定地位
俄國跟對岸自己都有蠻多online judge系統與題庫的
雖然online judge系統蠻常見的
臺灣自己也至少有三個吧
好啦,這篇大概就到此結束

其實想到要解題
就多少有些憂鬱
特別是有些題目的英文敘述對我而言真得不是很好懂
可能要試誤很多次啊
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=3209345
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:ACM|online judge|重導向運算子

留言共 1 篇留言

薯條控
這篇其實整理不少資源說
不過很多我也還沒看就要畢業了...
https://m.facebook.com/notes/林依珊/awesome-competitive-programming-中文導讀/889374854513187

06-02 14:55

李兒諳
感謝回應!!
看了下,資料超多的
感覺有些延伸超連結還不錯
有些語言還不同
沒看完似乎是正常的!!06-02 15:29
我要留言提醒:您尚未登入,請先登入再留言

4喜歡★y541258 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:實況日誌-part 4,... 後一篇:程式語言建立自信系列-排...

追蹤私訊切換新版閱覽

作品資料夾

ilove487奇幻小說連載中
《克蘇魯的黎明》0690.真格看更多我要大聲說4小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】