NCPC初賽-不定長度字串轉整數的方法

Posted by John on 2016-10-01
Words 596 and Reading Time 2 Minutes
Viewed Times

擷取.JPG

大四的學長今年可能是最後一年了,所以第一次找他們一起組一隊打打看。

按照去年的經驗只要有一題基本上初賽就會過,所以也沒有很緊張,連規定的25張code都沒有印就上場了。說來也蠻好笑的,原本系上的考場因為颱風來停電,所以改到圖資的電腦教室去考試,這邊的設備被反倒比系上好……

這次總共有五題,程式很猛的學長拿了第一題開始看,另一個學長和我看其他題,剛好看到有一題一副就是”我是水題,快解我”的樣子,所以我就先去看那題了:求一個不定長度的陣列,判斷是不是Max Heap,想想還蠻簡單的,甚至還以為有陷阱。

不過不定長度字串的寫法真的不會,印象中每次這種題型我都要用字元一個一個判斷,今年學長教了一個方法,趁這次機會趕快學起來:

大概是說stringstream是一個c++的stream,透過>>和<<支援字串和不同型態的轉換,和cin相同遇到空白會忽略,EOF為結束 相關資料可以參考:
[C++] StringStream-int和sting轉換的另一種方案與清空StringStream

#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <sstream>
using namespace std;
int main()
{
string s;

while(getline(cin,s))
{
int n = 0;
stringstream ss(s);
while(ss >> n )
{
cout << n << endl;
}
}
return 0;
}

處理完字串就解決完D了! 上傳AC後發現好多人都對了~~學長在WA兩次後也過A了~

剩下的時間我們想把B解出來,題目大概是給一個長方形的地圖和一些座標,有個機器人能從左上走到右下,走法只能是:

  1. 往右走
  2. 往下走

在放出最少機器人的情況下達成所有座標都被走過,最少機器人的值為多少?

原本的想法用Greedy每次找最左上方的點,依序往右下找,找到終點就算一條路徑,再用同樣的方法找第二條路徑……範例測資過了卻WA,有點懊惱,不知道錯在哪裡。

總之初賽兩題,沒意外應該進決賽了,到時去吃下午茶。


>