专栏文章
P2911题解
P2911题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mip4y9n2
- 此快照首次捕获于
- 2025/12/03 06:14 3 个月前
- 此快照最后确认于
- 2025/12/03 06:14 3 个月前
题目大意
这道题说的是有3个骰子,求出这3个骰子的点数和出现次数最多的数。
样例描述
先枚举所有情况,再看和出现次数最多的数,答案是5。
解题思路
先分析一下时间复杂度,2≤S1≤20;2≤S2≤20;2≤S3≤40。
所以时间复杂度为
O(S1*S2*S3)。我们可以先枚举每个骰子的点数,让后放到一个桶里,用 maxid 来记录每个点数出现的次数。
代码思路
先开一个桶数组 t 。 t[i] 表示点数和为 i 的骰子出现的次数,用 maxid 保存出现次数最多的下标,最后输出 maxid 。
AC代码
CPP#include<bits/stdc++.h>
using namespace std;
const int N=20+20+40+5;
int a[N];//桶数组
int maxid=0;//最大值下标
int main(){
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
//ios::sync_with_stdio(false);
//cin.tie(0);
//cout.tie(0);
int s1,s2,s3;
cin>>s1>>s2>>s3;
for(int i=1;i<=s1;i++){
for(int j=1;j<=s2;j++){
for(int k=1;k<=s3;k++){
a[i+j+k]++;
if(a[i+j+k]>a[maxid]) maxid=i+j+k;//统计
}
}
}
cout<<maxid;//输出
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...