题库首页 › 青少年软件编程(C语言) › 题目 4660

田忌赛马 你一定听过田忌赛马的故事吧? 如果3匹马变成1000匹,齐王仍然让他的马按从优到劣的顺序出赛,田忌可以按任意顺序选择他的赛马出赛。赢一局,田忌可以得到200两银子,输一局,田忌就要输掉200两银子,平局的话不输不赢。 请问田忌最多能赢多少银子? 时间限制:5000 内存限制:65536 输入 输入包含多组测试数据. 每组测试数据的第一行是一个整数n(1<=n<=1000),表示田忌和齐王都拥有n匹马。接下来一行是n个整数,表示田忌的马的速度,下一行也是n个整数,表示齐王的马的速度。 输入的最后以一个0表示结束。 输出 对每组数据,输出一个整数,表示田忌至多可以赢多少银子,如果田忌赢不了,就输出一个负数,表示田忌最少要输多少银子。 样例输入 3 92 83 71 95 87 74 2 20 20 20 20 2 20 19 22 18 0 样例输出 200 0 0

正确答案:参考程序(C++):田忌赛马贪心。双方排序,快马比快、慢马比慢:田忌最快的比齐王最快慢则用最慢消耗,快则赢200,平则比最慢。样例92,83,71对95,87,74→赢1输2→200-400=-200?实际输出200(特殊):用贪心最大胜数算。样例1输出200。核心:双端贪心。

试卷来源:202206 青少年等级考试C/C++真题四级

本卷相关题目

在线做题 同科目题库