YTU 3172: 最公正的裁判

本文介绍了一种通过排序和比较来确定最佳裁判的算法实现。该算法首先计算平均评分,然后对比每位裁判给出的评分,找到与平均评分差值最小且编号最靠前的裁判作为最佳裁判。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接

AC代码:

思路:模拟找一个最佳裁判,排序,找出   给出的分数与平均值之差最小的  ,往前找同样分数下编号最靠前的

#include<iostream>
#include<algorithm>
 
using namespace std;

typedef struct{
    int v;
    int p;
}num;
num a[20];
    
 
void search(int x)
{
    if(x>=2 && a[x].v==a[x-1].v)
    return search(x-1);
   
    cout<<a[x].p<<endl; 
}
 
 
int cmp(num a,num b)
{
    if(a.v!=b.v) return a.v<b.v;
    return a.p<b.p;  //相同得分按编号小到大
}
 
 
int  main(void)
{
    int i,aver,sum;
    sum=0;
   
    for(i=1;i<=7;i++)
    {
        cin>>a[i].v;
        sum+=a[i].v;    //和
        a[i].p=i;       //初始化位次
    }
    aver=sum/7;         //平均
    sort(a+1,a+7+1,cmp); //排序
    a[0].v = 0x3f3f3f3f;
    for(i=1;i<=7;i++)
    {     
        if(a[i].v==aver)  //找到最佳直接输出
        {
            cout<<a[i].p<<endl;
            break;
        }
        if(a[i].v>aver)   
        {
            if(abs(a[i].v-aver)>=abs(a[i-1].v-aver))
                search(i-1);    //v相等的第一个 
            else 
                cout<<a[i].p<<endl;  //平均差最小 确定最佳裁判
            break;              
        }
    } 
}

 

思路:与平均值的差值排序,输出第一个

 

#include<iostream>
#include<algorithm>
 
using namespace std;

typedef struct{
    int v;
    int p;
}judge;
judge a[20];
int aver; 
    
int cmp(judge a,judge b)
{
    if(a.v!=b.v) return abs(a.v-aver) < abs(b.v-aver);
    return a.p<b.p;  //相同得分按编号小到大
}
 
 
int  main(void)
{
    // std::ios::sync_with_stdio(false),cin.tie(NULL),cout.tie(NULL);
    int i,sum;
    sum = 0;
   
    for(i=1;i<=7;i++)
    {
        cin>>a[i].v;
        sum += a[i].v;    //和
        a[i].p = i;       //初始化位次
    }

    aver = sum/7;         //平均
    sort(a+1,a+7+1,cmp); //排序
    cout<<a[1].p<<endl;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值