hdoj acm steps 1.2.4(GPA)
2014-08-17 21:58
309 查看
答案没有问题,但是超时了,以下是超时代码
更改后的AC代码:
#include<iostream>
#include<string>
#include<cstring>
#include<iomanip>
#include<cstdio>
using namespace std;
int main()
{
string str;
int sum,cont;
bool check;
cout<<fixed<<showpoint<<setprecision(2);
while(getline(cin,str))
{
cont=sum=0;
check=true;
int length=str.length();
for(int i=0;i<length;i++)
{
if(str[i]==' ')
continue;
switch (str[i])
{
case 'A':sum+=4;cont++;break;
case 'B':sum+=3;cont++;break;
case 'C':sum+=2;cont++;break;
case 'D':sum+=1;cont++;break;
case 'F':cont++;break;
default:
check=false;
cout<<"Unknown letter grade in input"<<endl;
goto exit;
}
}
exit:
if(check)
cout<<static_cast<double>(sum)/static_cast<double>(cont)<<endl;
}
return 0;
}
修改主要有两处,最主要的一处是把数据读入变成了直接读入一整行而不是挨个读取,不知道是读取方式有问题还是两种读取方法的效率差异就这么大......第二处修改对于AC与否没有关系,但是在遇到第一个不正确字符后直接跳出比一直运行到最后肯定是要好的
更改后的AC代码:
#include<iostream>
#include<string>
#include<cstring>
#include<iomanip>
#include<cstdio>
using namespace std;
int main()
{
string str;
int sum,cont;
bool check;
cout<<fixed<<showpoint<<setprecision(2);
while(getline(cin,str))
{
cont=sum=0;
check=true;
int length=str.length();
for(int i=0;i<length;i++)
{
if(str[i]==' ')
continue;
switch (str[i])
{
case 'A':sum+=4;cont++;break;
case 'B':sum+=3;cont++;break;
case 'C':sum+=2;cont++;break;
case 'D':sum+=1;cont++;break;
case 'F':cont++;break;
default:
check=false;
cout<<"Unknown letter grade in input"<<endl;
goto exit;
}
}
exit:
if(check)
cout<<static_cast<double>(sum)/static_cast<double>(cont)<<endl;
}
return 0;
}
修改主要有两处,最主要的一处是把数据读入变成了直接读入一整行而不是挨个读取,不知道是读取方式有问题还是两种读取方法的效率差异就这么大......第二处修改对于AC与否没有关系,但是在遇到第一个不正确字符后直接跳出比一直运行到最后肯定是要好的
相关文章推荐
- HDOJ_ACM_steps——Identity Card
- 杭电ACM 1.2.4 GPA
- HDOJ HDU 1202 The calculation of GPA ACM 202 IN HDU
- HDOJ_ACM_steps——Buildings
- HDOJ_ACM_steps—— Higher Math
- HDOJ_ACM_steps——Vowel Counting
- HDOJ_ACM_steps——第二小整数
- HDOJ--ACM-Steps--2.1.3--Cake(GCD,简单数学)
- ACM--steps--dyx--1.2.4--Buildings
- HDOJ_ACM_steps——IBM Minus One
- ACM--打表--HDOJ 1999--不可摸数
- hdoj-4802-GPA
- ACM--steps--3.1.1
- ACM--枚举暴力--HDOJ 1017--A Mathematical Curiosity--水
- HDOJ HDU 2672 god is a girl ACM 2672 IN HDU
- HDOJ HDU 2061 Treasure the new start, freshmen! ACM 2061 IN HDU
- HDOJ 1215 HDU 1215 七夕节 ACM 1215 IN HDU
- ACM--steps--3.3.7--Watch The Movie(二维费用背包)
- 最短路算法 Dijkstra算法 HDU HDOJ 1548 A strange lift ACM
- HDU 1698 HDOJ 1698 Just a Hook ACM 1698 IN HDU