你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

小李打台球(c++)

2021-11-25 22:19:46

题目描述

  在异乡打拼的小李同志迷上了一款叫斯诺克的台球游戏,而且随着练习的深入,他总是能在某些神奇的时候开启外挂模式,此时小李指哪打哪,直至无球可打。现在小李想让你帮他计算下当他开启外挂模式的时候最多可以取得多少分数。
 注意:台面上的球数经常会异于传统斯诺克。
  斯诺克比赛的基本规则如下:
  一、彩球共分8种颜色,红(1分)、黄(2分)、绿(3分)、棕(4分)、蓝(5分)、粉(6分)、黑(7分)、白(主球,控制白球大其余球)。
  二、当台面上有红球的时候你必须先击打一个红球,然后只能击打一个彩球(不包括红球),此时落袋的彩球将会被放回桌面,一直重复该过程。
  三、当打完规则二的彩球(不包括红球)发现已经没有红球时,按彩球的分值从高到低将其依次击入袋中。

输入

输入仅有一行,共7个用空格隔开的整数,分别为当前台面上红、黄、绿、棕、蓝、粉、黑球的数目。

输出

输出仅有一行,共1个整数,表示小李可以得到的最高得分。

样例输入 Copy

2 0 1 0 3 0 2

样例输出 Copy

48

提示

台面上共有红球2个、绿球1个、蓝球3个、黑球2个,获得最高分的打法是红-黑-红-黑-绿-蓝-蓝-蓝-黑-黑,共可以获得48分。
保证最后得分不超过2^31-1。

 

#include<bits/stdc++.h>
using namespace std;


int main()
{
	int i,max;
	long long sum=0;//根据条件选择好适合的数据类型
	int a[10];
	max=0;
	for(i=1;i<=7;i++)
	{
		cin>>a[i];
		if(a[i]!=0)//找出最大值
		{
			max=i;
		}
	}
	if(max==1&&a[1]!=0)
	{
		cout<<"1";//当只有红球的时候,不管红球有多少个只有一分的得分 
		return 0;
	}
	for(i=1;i<=7;i++)//最后会有清桌的操作,所有的球都将被打进
	{
		sum+=a[i]*i;
	}
	sum+=a[1]*max;//加上特殊情况下加的分数
	cout<<sum;
	
	
	return 0;
}