2022.3.30 17:07 洛谷P5738

C:(100分)

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>


int num = 0;  //用于统计 当个选手 计算到的评分 的个数

double fenshu = 0;  //用于 临时储存 输入的分数

double fenshu_all = 0;  //用于 储存 当前选手的 总分

double fenshu_max = 0;  //用于 储存 当前选手的 单个最高分

double fenshu_min = 11;  //用于 储存 当前选手的 单个最低分

double all_people[110] = { 0 };  //用于 储存 所有选手的 最终得分


void chushihua()  //用于 初始化变量
{
	num = 0;

	fenshu_all = 0;

	fenshu_max = 0;

	fenshu_min = 11;
}


int main()
{
	int a1 = 0;

	int a2 = 0;

	scanf("%d %d", &a1, &a2);

	for (int i = 0; i <= a1 - 1; i++)
	{
		do
		{
			scanf("%lf", &fenshu);

			if (fenshu > fenshu_max)
			{
				fenshu_max = fenshu;  //计算最高分
			}

			if (fenshu < fenshu_min)
			{
				fenshu_min = fenshu;  //计算最低分
			}

			fenshu_all += fenshu;  //统计总分

			num++;

		} while (num < a2);

		all_people[i] = (fenshu_all - fenshu_max - fenshu_min) / (a2 - 2);

		chushihua();  //用于 初始化变量
	}

	for (int i = 0; i <= a1 - 1; i++)
	{
		if (all_people[i] > fenshu_max)  //判断 所有选手的最终得分中 谁是最高的
		{
			fenshu_max = all_people[i];
		}
	}

	printf("%.2lf", fenshu_max);

	return 0;
}

C++:(40分)

不说什么了,又是样例通过然后死找找不出问题来的,懒得搞了

整体思路是通过sort来讲储存在数组中的所有元素升序,然后除去最大值和最小值不相加

但因为输入的元素的个数不可控,于是我采用了动态创建空间的方法

#define _CRT_SECURE_NO_WARNINGS 1

#include <iostream>

#include <algorithm>

#include <iomanip>

using namespace std;

int main()
{
	int a1 = 0;

	int a2 = 0;

	cin >> a1 >> a2;

	double* fenshu = new double[a2];

	double fenshu_all1 = 0;

	double* fenshu_all2 = new double[a2];

	for (int i = 0; i <= a1 - 1; i++)
	{
		for (int j = 0; j <= a2 - 1; j++)
		{
			cin >> fenshu[j];
		}

		sort(fenshu, fenshu + a2);

		for (int k = 1; k <= a2 - 2; k++)
		{
			fenshu_all1 += fenshu[k];
		}

		fenshu_all2[i] = fenshu_all1 / double(a2 - 2);

		fenshu_all1 = 0;
	}

	sort(fenshu_all2, fenshu_all2 + a1);

	cout << fixed << setprecision(2) << fenshu_all2[a1 - 1];

	return 0;
}

python:(60分)

又是样例通过,最近事多懒得找错了

参考思路就好了

a, b = map(int, input("").split(" "))

total = 0  # 用于储存 除去 最高分 和 最低分 后剩下 得分的 的 总和

all = [0]

for i in range(1, b + 1):
    c = list(map(float, input("").split(" ")))
    # 这里map函数最后返回的是迭代器,其实迭代器可以直接进行遍历,但因为后面要删除元素,所以再用一个list()强制转化得到列表

    c.remove(max(c))  # 移除最大值

    c.remove(min(c))  # 移除最小值

    for k in c:
        total += k  # 计算总分

    all.append(total / (b - 2))  # 把 total 的结果插入 列表all 中

    total = 0  # 重置 total 的值

print("{0:.2f}".format(max(all)))  # 输入

'''
map函数等见:
https://mp.csdn.net/mp_blog/creation/editor/123709376
'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值