ACM 石头剪刀布

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网

已知石头剪刀布的规则是:布赢石头,石头赢剪刀,剪刀赢布。
每局胜者得2分,平局双方各得1分,败者不得分。
牛牛和牛妹一共玩了𝑛 n 局石头剪刀布,他们不记得每局自己出的是什么,只记得自己一共出了多少个石头、多少个剪刀、多少个布。
牛牛想知道,自己最高可能得多少分?

输入描述
第一行一个正整数n n\ n ,代表游戏的总局数。
第二行三个整数a1、b1、c1​,分别代表牛牛出的石头数、剪刀数和布数。
第三行三个整数a2、b2、c2​,分别代表牛妹出的石头数、剪刀数和布数。

输出描述

牛牛最高可能的得分。

样例

#include<stdio.h>
int main()
{
    int ax[2][3];
    int n,i,j,sum=0;
    scanf("%d",&n);
    for(i=0;i<2;i++)
    {
        for(j=0;j<3;j++)
        {
            scanf("%d",&ax[i][j]);
        }
    }
    if(ax[0][0]>=1&&ax[1][1]>=1)
    {
        if(ax[0][0]>=ax[1][1])
        {
            sum+=2*ax[1][1];
            ax[0][0]=ax[0][0]-ax[1][1];
            ax[1][1]=0;
        }
        else
        {
            sum+=2*ax[0][0];
            ax[1][1]=ax[1][1]-ax[0][0];
            ax[0][0]=0;        
        }
    }
    if(ax[0][1]>=1&&ax[1][2]>=1)
    {
        if(ax[0][1]>=ax[1][2])
        {
            sum+=2*ax[1][2];
            ax[0][1]=ax[0][1]-ax[1][2];
            ax[1][2]=0;
        }
        else
        {
            sum+=2*ax[0][1];
            ax[1][2]=ax[1][2]-ax[0][1];
            ax[0][1]=0;        
        }
    }
    if(ax[0][2]>=1&&ax[1][0]>=1)
    {
        if(ax[0][2]>=ax[1][0])
        {
            sum+=2*ax[1][0];
            ax[0][2]=ax[0][2]-ax[1][0];
            ax[1][0]=0;
        }
        else
        {
            sum+=2*ax[0][2];
            ax[1][0]=ax[1][0]-ax[0][2];
            ax[0][2]=0;        
        }
    }
    for(i=0;i<3;i++)
    {
        if(ax[0][i]>=1&&ax[1][i]>=1)
    {
        if(ax[0][i]>=ax[1][i])
        {
            sum+=ax[1][i];
            ax[0][i]=ax[0][i]-ax[1][i];
            ax[1][i]=0;
        }
        else
        {
            sum+=ax[0][i];
            ax[1][i]=ax[1][i]-ax[0][i];
            ax[0][i]=0;        
        }
    }
    }
    printf("%d",sum);
    return 0;
}

思路就是,最优解,先考虑赢的情况,后考虑平局的情况,输的不减分就不用考虑了。

  • 15
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值