天天看點

4114 單詞逆序(nenuOJ)

Problem Description

對于每個單詞,在不改變這些單詞之間的順序下,逆序輸出每個單詞。

這個問題包括多組測試資料。第1行是一個整數N,緊接着是一個空行,然後是N組測試資料,每組資料之間有一個空行。要求輸出N個輸出塊。每個輸出塊之間有一個空行。

Input

第1行為一個整數,表示測試資料的組數。每個測試資料占一行,包含若幹個單詞,單詞之間用一個空格隔開,每個單詞僅由大小寫字母字元組成。

Output

對每組資料中的每個測試資料,輸出一行。

Sample Input

1

3

I am happy today

To be or not to be

I want to win the practice contest

Sample Output

I ma yppah yadot

oT eb ro ton ot eb

I tnaw ot niw eht ecitcarp tsetnoc

因為還是菜鳥,是以請教了學長,代碼如下:

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
char s[maxn];
stack<char> st;
void solve() {
	int len = strlen(s);
	for(int i = 0; i < len; ++i) {
		if(s[i] == ' ') {
			while(!st.empty()) {
				putchar(st.top());
				st.pop();
			}
			printf(" ");	
		} else if(isalpha(s[i])) {
			st.push(s[i]);
		}
	}
	while(!st.empty()) {
		putchar(st.top());
		st.pop();
	}
	puts("");
}
int main() {
	int T; 
	while(scanf("%d", &T)!=EOF){
		for(int cs = 1; cs <= T; ++cs) {
		int n; scanf("%d", &n); 
		getchar();
		
		for(int i=0;i<n;i++){
			fgets(s, maxn, stdin);
			solve();
		} 
		
	//	puts("");
	}
	}
	
	return 0;
}
           

整體思路是對的,應該是格式空行上有點問題,如果有人知道麻煩告訴我一下。

繼續閱讀