您的位置:首页 > 其它

杭电1062-Text Reverse

2013-07-24 22:13 579 查看

Text Reverse

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 13021    Accepted Submission(s): 4954


[align=left]Problem Description[/align]
Ignatius likes to write words in reverse way. Given a single line of text which is written by Ignatius, you should reverse all the words and then output them.

 

[align=left]Input[/align]
The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow.

Each test case contains a single line with several words. There will be at most 1000 characters in a line.

 

[align=left]Output[/align]
For each test case, you should output the text which is processed.

 

[align=left]Sample Input[/align]

3
olleh !dlrow
m'I morf .udh
I ekil .mca

 

[align=left]Sample Output[/align]

hello world!
I'm from hdu.
I like acm.

Hint
Remember to use getchar() to read '\n' after the interger T, then you may use gets() to read a line and process it.
以前不知道头文件<cstring>有strrev这个函数(使字符串逆向),看别人代码我顿时无语了,尼玛
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
const int MAX=101;
char s[MAX][MAX];
char k[MAX][MAX];
int p[MAX];
using namespace std;
int main()
{
int t,n,i,j,a,b,q;
while(cin>>t)
{
getchar();
for(i=0;i<t;i++)
{
gets(s[i]);
a=0;
b=0;
n=strlen(s[i]);
for(j=0;j<n;j++)
{
if(s[i][j]==' ')
{
p[a]=b;
a+=1;
b=0;
}
else
{
k[a][b]=s[i][j];
b+=1;
}
}
p[a]=b;
for(q=0;q<=a;q++)
{
for(j=p[q]-1;j>=0;j--)
{
cout<<k[q][j];
}
if(q!=a)
cout<<' ';
}
cout<<endl;
}
}
return 0;
}
/*-------------别人代码--------------------
#include<stdio.h>
#include<string.h>
int main()
{
int t;
scanf("%d\n",&t);
while(t--)
{
char s[1005]={};
while(scanf("%[^ \n]",s)!=EOF)
{
printf("%s",strrev(s));
s[0]=0;
putchar(getchar());
}
}
return 0;
}
-------------------------------------------*/

坑啊!!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  杭电1062-Text Reverse