搜狗笔试题

搜狗2016校园招聘 C++工程师笔试题
题目1:
现有两堆硬币,小明和小亮玩游戏,每次每人只能从其中一堆中取走1个或2个硬币,最后将硬币取完者算作胜利,当两堆硬币的个数分别是12,13时,小明应该如何安排策略才能必定获得胜利?

答案:安排自己先拿。
策略:自己先从13中取一个,这样两边都是12。 如果对方从一堆取硬币,则自己从另一堆中取相同数量的硬币。因为两堆个数一样,所以,最后一定会赢。

题目2:

#include<stdio.h>
int main()
{
    unsigned char i=7;
    int j=0;
    for(;i>0;i-=3)
    {
       ++j;
     }
     printf("%d\n",j);
     return 0;
}

问该程序的输出是多少?
前3个是:7 4 1,
当再-3时,是-2,发生下溢, 因为是unsigned类型, 所以 大小为 254。
254 % 3 = 2, 最后当2 -3 = -1 ,再次下溢, 大小为255。
255 % 3 = 0, 可以终止循环。最终个数为
7 4 1 -2
254 / 3 = 84, -1
255 / 3 = 85, 因为最后是 i>0, 所以,要-1。
4 + 85 + 84 = 173。

题目3:
某个大型的网络游戏网站,现有几亿用户,为了实时获取前十名游戏分数最高的玩家,使用以下哪个排序算法比较合理( )
A 基数排序
B 快速排序
C 二叉排序
D 堆排序
答案:堆排序。
这是一个topk问题。堆排序每次可以获得一个最大(最小)值,对位topk问题,时间复杂福是O(klogn).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhengjihao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值