洛谷P2911 [USACO08OCT] Bovine Bones G

P2911 [USACO08OCT] Bovine Bones G

题目描述

Bessie loves board games and role-playing games so she persuaded Farmer John to drive her to the hobby shop where she purchased three dice for rolling. These fair dice have S1, S2, and S3 sides

respectively (2 <= S1 <= 20; 2 <= S2 <= 20; 2 <= S3 <= 40).

Bessie rolls and rolls and rolls trying to figure out which three-dice sum appears most often.

Given the number of sides on each of the three dice, determine which three-dice sum appears most frequently. If more than one sum can appear most frequently, report the smallest such sum.

POINTS: 70

输入格式

* Line 1: Three space-separated integers: S1, S2, and S3

输出格式

* Line 1: The smallest integer sum that appears most frequently when the dice are rolled in every possible combination.

输入输出样例 #1

输入 #1

3 2 3

输出 #1

5

说明/提示

Here are all the possible outcomes.

1 1 1 -> 3  
1 2 1 -> 4  
2 1 1 -> 4  
2 2 1 -> 5  
3 1 1 -> 5  
3 2 1 -> 6 
1 1 2 -> 4  
1 2 2 -> 5  
2 1 2 -> 5  
2 2 2 -> 6  
3 1 2 -> 6  
3 2 2 -> 7 
1 1 3 -> 5  
1 2 3 -> 6  
2 1 3 -> 6  
2 2 3 -> 7  
3 1 3 -> 7  
3 2 3 -> 8

Both 5 and 6 appear most frequently (five times each), so 5 is the answer.

#include<bits/stdc++.h>
using namespace std;
int s1,s2,s3,res;
int cnt[20000];
int maxn=-1e9;
int main()
{
	scanf("%d%d%d",&s1,&s2,&s3);
	for(int i=1;i<=s1;++i)
	{
		for(int j=1;j<=s2;++j)
		{
			for(int k=1;k<=s3;++k)
			{
				cnt[i+j+k]++;
			}
		}		
	}
	for(int i=3;i<=s1+s2+s3;++i)
	{
		if(cnt[i]>maxn) maxn=cnt[i],res=i; 
		//将和值从小到大排,将可以取到最小值 
        //我一开始把cnt[i]和最大值弄混了
    //写成if(cnt[i]>maxn) maxn=i; 逻辑上出问题
	}
	printf("%d",res);
	return 0;	
 } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值