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;
}
整體思路是對的,應該是格式空行上有點問題,如果有人知道麻煩告訴我一下。