[BZOJ1599] [Usaco2008 Oct] 笨重的石子

Description

  贝西喜欢棋盘游戏和角色扮演类游戏所以她说服Farmer John把她带到玩具店,在那里,她购买了三个不同的骰子,这三个质量均匀的骰子,分别有S1,S2,S3个面。(2 <= S1 <= 20; 2 <= S2 <= 20; 2 <= S3 <= 40). 贝西掷啊掷啊掷啊,想要知道出现几率最大的和是多少。 问题给出三个骰子的面数,让你求出出现几率最大的和是多少。如果有很多种和出现的几率相同,那么就输出小的那一个。

Input

  *第一行:三个由空格隔开的整数:s1,s2,s3

Output

  *第一行:所要求的解

Sample Input

3 2 3

Sample Output

5

  输出详解:
  这里是所有可能的情况.
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
  5和6出现的几率都是最大的,所以输出5.

HINT 

Source

  资格赛

Solution

  三层for循环就结了。@czj答案为什么不一定是(s1+s2+s3)/2向下取整
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int sum[100];
 4 int main()
 5 {
 6     int a, b, c, ans = 3;
 7     cin >> a >> b >> c;
 8     for(int i = 1; i <= a; i++)
 9         for(int j = 1; j <= b; j++)
10             for(int k = 1; k <= c; k++)
11                 sum[i + j + k]++;
12     for(int i = 4; i <= a + b + c; i++)
13         if(sum[i] > sum[ans]) ans = i;
14     cout << ans << endl;
15     return 0;
16 }
View Code
原文地址:https://www.cnblogs.com/CtrlCV/p/5351276.html