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;
}
854

被折叠的 条评论
为什么被折叠?



