b99902HW 板


LINE

※ [本文轉錄自 math120908 信箱] 作者: [email protected] ([email protected]) 標題: [關於] 寫 Online Judge part.2 時間: Wed Oct 20 08:33:10 2010 作者: skyly (skyly) 看板: NextArcadia 標題: [關於] 寫 Online Judge part.2 時間: Wed Oct 20 01:48:45 2010 這次要談的是有關寫 Online Judge 題目的 Input 所需要注意的一些事項. 首先, 通常 Online Judge 的題目可以分為兩大類型: Batch problems (normal case) 跟 Interactive problems Batch problems 也就是平時較常看到的問題, 就是給你的測試資料是一次給定的, 講白一點即你可以隨時讀資料隨時輸出資料. 例如你可以一筆一筆慢慢的作, 也可以全部讀進來一起做再一口氣輸出. Interactive problems 一般稱做 互動題, 這種題目比較少見. 對於一題互動題, 你可能要 include 一些題目提供的 header files, 然後或許要使用一些題目給訂的 functions 之類的, 因題而異. 最特別的一點是你主要是要 跟 judge system 互動, 例如說你可能要做一些 function calls 傳入一些值才能繼續作下去之類的. //TIOJ 1087 或許是一個不錯的例子 接著要談的是關於題目的 輸入型態, 在這邊我們只討論 Batch 題, 也就是一般的題目的情況. 我們對於一個 Batch 題目的輸入, 通常分作 單筆輸入 多筆輸入(循環輸入) 所謂的 單筆輸入 例如 Judgegirl 就是一個很好的例子, 意思就是對於每一筆測試資料, 都重新將 input 導入你的執行檔. (maybe 是分做很多檔案) 來一個 example: 請輸入一個整數 n, 並輸出 n. 那麼你可以這樣寫: #include <stdio.h> int main() { int n; scanf("%d", &n); printf("%d\n", n); //記得我們上次說的要換行嗎? return 0; } 這種寫法就是針對所謂的單筆輸入. 而單筆輸入的題目通常在題目中會有一些關鍵的句子告訴你是單筆輸入, 例如說 "本題只有一筆測試資料", 但這並不代表這題真的只有一筆測試資料, 而只是要提醒你該題是屬於單筆輸入的題目. 另一種更為常見的則是 多筆輸入(或稱作 循環輸入), 意思就是你每一次程式的執行都要讀多筆的測試資料, 而其中又分為 1. 以 EOF 作結束 2. 以限定條件做結束 example for case 1: 本題有多筆輸入, 以 EOF 作為結束. 對於每一筆輸入給定兩個整數 a, b, 請輸出 a+b 的結果. 那麼你可以這樣寫: #include <stdio.h> int main() { int a, b; while ( scanf("%d%d", &a, &b) != EOF ) { //這個助教應該有提過 printf("%d\n", a + b ); } return 0; } 實際題目的話你可能會見到以下關鍵句, 來判定這題是屬於 EOF 類 的多筆輸入題: "There are multiple input in the testcase. The input is ended by EOF." example for case 2: 本題有多筆輸入, 對於每一筆輸入一個正整數 a, 請輸出 a+1 的結果. 以 a=0 作為結束. 那麼你可以這樣寫: #include <stdio.h> int main() { int a; while ( scanf("%d", &a) != EOF ) { if ( a == 0 ) break; printf("%d\n", a + 1 ); } return 0; } 對於這種 case, 題目會說明該以什麼條件做為輸入的結尾, 如 example 中的 a=0 就是輸入結尾的條件. 那麼或許你會有個問題, 如果題目都沒說的話怎麼辦?! 此時你應該先以 " EOF 多筆輸入 " 作為第一考量, 比較不容易錯. Input 所需要注意的一些部分大致上介紹到這裡. 是說包括這次提的 Input 或者是上次講的 Output, 其實都還有很多細節尚未說明到, 只是在此先舉出一些常見的問題. 其中包括很多因素, 比如說有些觀念還沒有教到等等, 那其實也沒有必要急著去鑽那些點, 所以在這兩篇文中我就沒有多提. 不過如果大家真的有遇到除了這些以外的問題還是歡迎來提問~ 那麼就先這樣了. --



※ 發信站: 批踢踢兔(ptt2.cc)
◆ From: 123.194.173.14
1F:→ ryan8175ptt2:太用心了Q_Q 我要推暴她(?) 不是啦推暴這篇文推 10/20 07:46
2F:→ math120908:繼續轉轉轉:p推 10/20 08:32
--



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.137
3F:推 m80126colin:強者用心讀者認真推 10/20 09:13
4F:推 s864372002:還有第三個類型 - 在開頭給定資料筆數~ 10/20 09:45
5F:推 skyly:抱歉昨天太晚打腦筋不清楚竟然漏了...Orz 我原文加上去了XD 10/20 23:19







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP