杭电1062

刚开始写的时候是用一个数组记录所有的单词反过来的,然后一起输出会超时(这个是超时的)

#include<iostream>
using namespace std;
int main()
{
 void change(char a[20],int l);
 int t,l,k=0;
 cin>>t;
 for(int i=0;i<t;i++)
 {
  char a[1000]={0},b[20],c,d[1];
  do
  {
   
   cin>>b;
   c=getchar();
   l=strlen(b);
   change(b,l);
   strcat(a,b);
   l=strlen(a);
   a[l]=c;
   k++;
  }while(c!='\n');
  cout<<a;
 }
}
void change(char a[20],int l)
{
 int i,j,tem;
 for(i=0;i<l/2;i++)
 {
  tem=a[i];
  a[i]=a[l-i-1];
  a[l-i-1]=tem;
 }
}

 

现在不用转换单词顺序,只是改变输出顺序,这样就不用执行很多循环了,这样就不会超时了

 

#include<iostream>
#include<string.h>
using namespace std;
int main()
{
 int t,l;
 cin>>t;
 getchar();
 for(int i=0;i<t;i++)
 {
  char a[1000];
  gets(a);
  l=strlen(a);
  a[l]=' ';a[l+1]='\0';
  int j=0,m=0;
  while(j<=l)
  {
   if(a[j]==' ')
   {
    for(int k=j-1;k>=m;k--)
       cout<<a[k];
       if(j!=l)
       cout<<' ';
       m=j+1;
   }
   j++;
  }
        cout<<endl;
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值