1. 程式人生 > 其它 >1009 說反話 (20 point(s))

1009 說反話 (20 point(s))

#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 應該更方便一點。目的也是為了逆序輸出。