首页 > 学院 > 开发设计 > 正文

PAT-A 1011. World Cup Betting (20)

2019-11-08 18:31:02
字体:
来源:转载
供稿:网友

题目链接在此。

题意

此处就说通俗的意思,其实从样例来看比较好懂一些…… 给出三行数据,代表三场比赛。每行有三个浮点数,从左到右分别代表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即可。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表