PAT-A 1011. World Cup Betting (20)

题目链接在此

题意

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值