您的位置:首页 > 其它

PAT-A 1011. World Cup Betting (20)

2017-02-16 20:23 435 查看
题目链接在此

题意

此处就说通俗的意思,其实从样例来看比较好懂一些……

给出三行数据,代表三场比赛。每行有三个浮点数,从左到右分别代表W(win), T(tie),L(lose)。现在需要从每行的W,T,L中选择最大的数,并输出每行选的哪一个。设每行的最大数分别为a,b,c,最后输出(a*b*c*0.65-1)*2的值,保留两位小数。

思路

我的思路是用了三个数组a,b,c来保存输入,并且a[3],b[3],c[3]用来保存每行的最大值,a_index, b_index, c_index 用来保存最大值所在的下标,mp用来保存W,T,L到数组的映射,这样方便输出。

AC代码

#include<stdio.h>

int mp[3] = {'W','T','L'};

int main(){

double a[4] = {0},b[4] = {0},c[4] = {0};
int a_index, b_index, c_index;

scanf("%lf %lf %lf",a,a+1,a+2);
scanf("%lf %lf %lf",b,b+1,b+2);
scanf("%lf %lf %lf",c,c+1,c+2);

for(int i = 0 ; i < 3; i++){
if(a[i] > a[3]) { a[3] = a[i]; a_index = i;}
if(b[i] > b[3]) { b[3] = b[i]; b_index = i;}
if(c[i] > c[3]) { c[3] = c[i]; c_index = i;}
}

double ans = (a[3]*b[3]*c[3]*0.65-1)*2;

printf("%c %c %c %.2f\n",mp[a_index],mp[b_index],mp[c_index],ans);

return 0;
}


疑问

我在自己的机器上跑出来的样例的结果是37.97(37.9750),不明白%.nf这种是如何舍入进位的,在此恳请知道的大神点拨一下~

《算法笔记》的思路:

令ans记录最大收益,初值为1.0。

每读入一行,就找出该行最大值,并输出其所在下标对应的W,T,L,同时令ans累乘该最大值。

最后输出(ans*0.65-1)*2即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: