之前代码 Time Limit Exceeded 1048 1000MS 260K 674 B C++
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char s[20],e[20],str[200];
int len;
while(cin>>s,strcmp(s,"ENDOFINPUT")!=0)
{
if(strcmp(s,"START")==0)
{
getchar();
cin.getline(str,100);
while(cin>>e)
{
if(strcmp(e,"END")==0)
break;
}
}
else continue;
len=strlen(str);
for(int i=0;i<len;i++)
{
if(str[i]>='A'&&str[i]<='Z')
{
if(str[i]=='A') str[i]='V';
else if(str[i]=='B') str[i]='W';
else if(str[i]=='C') str[i]='X';
else if(str[i]=='D') str[i]='Y';
else if(str[i]=='E') str[i]='Z';
else str[i]-=5;
}
}
cout<<str<<endl;
}
return 0;
}
之后修改后的代码:Accepted 1048 0MS 376K 652 B C++
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char s[100],e[100],str[100000];
int len;
while(cin>>s,strcmp(s,"ENDOFINPUT")!=0)
{
if(strcmp(s,"START")==0)
{
getchar();
gets(str);
}
else continue;
cin>>e;
if(strcmp(e,"END")==0)
{
len=strlen(str);
for(int i=0;i<len;i++)
{
if(str[i]>='A'&&str[i]<='Z')
{
if(str[i]=='A') str[i]='V';
else if(str[i]=='B') str[i]='W';
else if(str[i]=='C') str[i]='X';
else if(str[i]=='D') str[i]='Y';
else if(str[i]=='E') str[i]='Z';
else str[i]-=5;
}
}
cout<<str<<endl;
}
}
return 0;
}
是因为gets()和 cin.getline() 读入字符串的效率有差别吗?
10 个解决方案
#1
别人说 getline()的效率不怎么样。我不知道 !
#2
mark
#3
对scanf和cin的效率做过测试, scanf效率cin比高很多,可对gets和cin.getline做单独测试,
我认为你的程序效率确实主要受cin.getline影响
我认为你的程序效率确实主要受cin.getline影响
#4
学习了。
#5
这种研究有多少意义?有多少人通过标准输入快速、大量的输入?他就是有点效率损失又如何?
#6
搞ACM建议还是用scanf 和printf吧,效率差太多了
#7
C++的流处理速度确实不怎么样?不过用起来C++的比较顺手,但ACM又似乎很讲究效率和算法。看来只能适应后者了。
#8
C++的流处理速度确实不怎么样?不过用起来C++的比较顺手,但ACM又似乎很讲究效率和算法。看来只能适应后者了。
#9
scanf和cin是有很大的差别的,acm有时候会在这些地方考察你,估计gets和getline也是一样的吧,是不是c的东西都快一点?- -!
#10
ACM 推荐用 C 的 IO 函数,C++ IO 包含缓冲,速度差的受不了,特别是大的输入。
#1
别人说 getline()的效率不怎么样。我不知道 !
#2
mark
#3
对scanf和cin的效率做过测试, scanf效率cin比高很多,可对gets和cin.getline做单独测试,
我认为你的程序效率确实主要受cin.getline影响
我认为你的程序效率确实主要受cin.getline影响
#4
学习了。
#5
这种研究有多少意义?有多少人通过标准输入快速、大量的输入?他就是有点效率损失又如何?
#6
搞ACM建议还是用scanf 和printf吧,效率差太多了
#7
C++的流处理速度确实不怎么样?不过用起来C++的比较顺手,但ACM又似乎很讲究效率和算法。看来只能适应后者了。
#8
C++的流处理速度确实不怎么样?不过用起来C++的比较顺手,但ACM又似乎很讲究效率和算法。看来只能适应后者了。
#9
scanf和cin是有很大的差别的,acm有时候会在这些地方考察你,估计gets和getline也是一样的吧,是不是c的东西都快一点?- -!
#10
ACM 推荐用 C 的 IO 函数,C++ IO 包含缓冲,速度差的受不了,特别是大的输入。