高考组数。
2023-12-28 21:32:16
题目名字
题意
- 给定 n 组数,每组数中有 k 个数,求每组 k 个数的平均值,并输出平均值最大的两组数的编号,如果平均值相同就按id的先后输出。
- 要求 k 个数的平均值,我们可以用一个变量累加后除以 k,再建立变量来存储输入的先后,也就是编号。
思路
- 结构体里面定义两个变量,分别表示每组数的编号和平均值
- 再写一个函数来设定排序方式,先判断平均值是否相等,如果相等就按编号从小到大排序,否则就按平均值从大到小排序
- 最后输出数组的第一项和第二项的编号即可。
坑点
- 浮点数要除以浮点数,才能找到平均数
算法一:结构体+sort排序
时间复杂度
$
实现步骤
- 定义结构体
- 结构体里面定义两个变量,分别表示每组数的编号和平均值
- 再写一个函数来设定排序方式,先判断平均值是否相等,如果相等就按编号从小到大排序,否则就按平均值从大到小排序
- 最后输出数组的第一项和第二项的编号即可。
代码
#include<bits/stdc++.h>
using namespace std;
int n,k;
struct st{
int id,pjz;
}a[105];
int cmp(st x,st y){
if(x.pjz==y.pjz) return x.id<y.id;
else return x.pjz>y.pjz;
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
int ans=0;
a[i].id=i;
for(int j=1;j<=k;j++){
int sum;
cin>>sum;
ans+=sum;
}
a[i].pjz=ans*1.0/k*1.0;
}
sort(a+1,a+n+1,cmp);
cout<<a[1].id<<endl<<a[2].id;
return 0;
}
总结
多读几遍,理解题意,才能知道需要什么步骤
文章来源:https://blog.csdn.net/2301_81135929/article/details/135277235
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!