您的位置:首页 > 其它

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与否没有关系,但是在遇到第一个不正确字符后直接跳出比一直运行到最后肯定是要好的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: