[算法]滴滴笔试题——赛马问题

问:

25匹马,5个跑道,每个跑道最多能有1匹马进行比赛,最少比多少次能比出前3名?

答:

求前3名要7次;

将马分成A、B、C、D、E五组。
第1-5次比赛:各组分别进行比赛,决出各组名次,取每组前三名

A1、A2、A3,
B1、B2、B3,
C1、C2、C3,

D1、D2、D3,

E1、E2、E3。
第6次比赛:A1、B1、C1、D1、E1,

假设得到的结果是A1、B1、C1、D1、E1,A1是跑的最快的,那么分析A组A2、A3还有希望冲进前3,B组呢?只有B2还有希望冲进前3,C组的C1,C2并没有希望冲进前3了,因为C1是比赛的名次是第3名了,D组E组都没有希望了。现在已经知道A1肯定是第一名,剩下A2、A3、B1、B2、C1是有希望冲进前三的。

第7次比赛:A2、A3、B1、B2、C1比赛求出第2,第3即可。

链接:https://www.nowcoder.com/questionTerminal/ea2cf19557d546819d7fde300daeabb1
来源:牛客网

时间: 2024-11-07 18:44:19

[算法]滴滴笔试题——赛马问题的相关文章

[算法]滴滴笔试题——求最大子串和(O(n)复杂度)

扫描法.一次扫描数组即可得出答案,复杂度O(n).这种方法用文字描述不容易说清楚,下面用每一步运算的图示来表达.伪代码如下: maxsofar=end=0; for i=[0,n) end=max(end+x[i],0) maxsofar=max(maxsofar,end) 即使后面没有这样的值了,maxsofar中还保存了原来的最大和,有恃无恐.这里的一条重要原则是目前end的值必须>0,如果<0,则不用考虑,立刻放弃end目前的值,将它置为0,并且把end的指针指向58. 以此类推下去,最

[360笔试题]赛马

这是一道360的在线笔试题: 赛马,有25匹马,每次只能5匹马进行比赛,比赛只能得到5匹马之间的快慢程度,而不是速度,请问,最少要比多少次,才能获得最快的前3匹马? 解答:这道题乍一看,第一感觉就是肯定要分组,5个一组分成5组,然后比赛,得到每组的组冠军.然后让5个组冠军比赛得到前三名,似乎这样就可以了,这也是我的第一反应. 但是这是一套错误的方案,有可能有这样的分组,那就是第一组的5匹马是实力最强的,这种情况就得到不前三名.于是还要加赛一场,注意只取前三名. 最终答案要经过三步: 1.把25匹

数据结构与算法常见笔试题

一.算法的基本概念计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法.1.算法的基本特征:可行性,确定性,有穷性,拥有足够的情报.2.算法的基本要素:算法中对数据的运算和操作.算法的控制结构.3.算法设计的基本方法:列举法.归纳法.递推.递归.减半递推技术.回溯法.4.算法设计的要求:正确性.可读性.健壮性.效率与低存储量需求二.算法的复杂度1.算法的时间复杂度:指执行算法所需要的计算工作量2.算法的空间复杂度:执行这个算法所需要的内存空间三.数据结构的定义1.数据的逻辑结构:反映数

给定一个十进制数,将其转化为N进制数-----17年滴滴笔试题

题目:给定一个十进制数M,将其转化为N进制数,其中2<=N<=16,其中N为32为整型数; 输入:M N,如7 2 输出转化结果:111 注意点:考虑负数的情况,记得添加负号: 思路:1. 使用一个辅助栈来存放M对N取余的结果(M%N):   2. 处理余数<=9和>9两种情况,因为按照16进制,>9的数用ABCDEF取代   3. 再更新取余后M的取值:M=M/N:   4. 循环处理2,3两个步骤,直到M=0: 5. 处理最终结果,出栈,直到栈为空: 代码如下: pack

滴滴笔试题 就餐问题

题目:餐馆有n张桌子,每张桌子有只能坐固定的人数,现在有批客户每批客户有a人,消费金额是c,请问怎样安排客户,餐馆获利最多 Example: n张桌子的容纳人数:{2,4,2} 客户批次和消费金额{1,3}.{3,5},{3,7},{5,9},{1,10} 解题思路先把桌子的容纳人数排序,然后对客户进行消费金额的逆序排序,找到桌子最小,有刚好容纳该批客户的桌子 参考代码: package cn.edu.algorithm.prototype; import java.util.ArrayList

[算法]华为笔试题——拼音与英文转换

题目描述: 编写拼音与英文转换的函数,如果输入号码是英文,转成拼音,如果是拼音,转成英文,例如输入OneZeroDoubleThree,则输出YiLingSanSan. 拼音.英文见下表: Yi Er San Si Wu Liu Qi Ba Jiu Ling One Two Three Four Five Six Seven Eight Nine Zero 注意:每个单词均为首字母大写,遇到连续两个相同数字,输入可以前面加Double,输出不可以加Double. 输入描述: 由首字母大写的字符串

经典算法——堆排序笔试题

阿里巴巴2016研发工程师笔试选择题 1.将整数数组(7-6-3-5-4-1-2)按照堆排序的方式原地进行升序排列,请问在第一轮排序结束之后,数组的顺序是_____.

2018摩拜算法工程师笔试题

一.字符串变形 输入两个字符串a和b,a的长度小于b的长度.现在可以在a中的每个位置插入任意字符,使得最终a的长度等于b的长度,问最后a和b中对应位置字符不同的位置的个数. 这个问题可以看做是:带约束的最长公共子序列 考虑形如abcx 和ayybc的两个字符串,第一个字符串不能添加太多字符,否则会导致它的长度太长.当a[i]=b[j]时,i必须不能大于j,否则a[i]是不可能等于j的. 这道题测试样例过于简单,以至于很多错误解法也能全部通过. import java.util.Scanner;

Java工程师笔试题整理[校招篇]

隔着两个月即将开始校招了.你是不是也想借着这个机会崭露头角,拿到某些大厂的offer,赢取白富美.走上人生巅峰?当然如果你还没能打下Java基础,一定要先打好Java基础:如何一步一步的学Java - 学习编程 - 知乎专栏.然后再来看一下练习一下各大厂的面试笔试题目. 如果以下内容满足不了你,你还可以去看这篇: 2016校招编程题汇总 - 学习编程 - 知乎专栏 进入主要内容(主要内容整理来自牛客网:牛客网)(以下内容按照各大公司进行划分,对每一公司按照年份进行划分,如果想想下载以下内容,可以