1009 說反話 (20 point(s))
阿新 • • 發佈:2021-09-06
#include <bits/stdc++.h> using namespace std; int main() { string str, tmp1 = "", tmp2; vector<string> v; getline(cin, str); for(auto s: str) { // 當字元不是空格的時候 拼接字串 if(s != ' ') tmp1 += s; // 否則存入向量 並且重置tmp else { v.push_back(tmp1); tmp1 = ""; } tmp2 = tmp1; } v.push_back(tmp2); reverse(begin(v), end(v)); int first = 0; for(auto it: v) cout << (first++ ? " " : "") << it; }
因為這題沒有輸入的限制條件,直接就是輸入資料。當時編譯器除錯了半天,還以為是什麼輸入資料的問題,還以為是因為沒有換行符卡主了,怎麼控制視窗複製輸入進去之後就卡住了。之前不都是這樣寫的嗎,如果是直接到頭的,用 cin 來判斷是否到輸入流末尾就可以了。
結果發現控制檯卡住,但是 PAT 上同樣的程式碼卻正常輸入結束甚至有輸出了。迷。
如果不用 vector 其實用堆疊 stack 應該更方便一點。目的也是為了逆序輸出。