笔试1:创达

单选*4、多选*2、填空*4、编程*2
贪心算法不能解决哪种问题?最小生成树、N皇后、单源最短路径、背包问题
哈夫曼编码求带权路径长度。
循环队列出队队头指针计算。
二分查找时的索引序列。
某系统20*6=140成立,该系统是多少进制? (我自己一个个算的,网友方式p*2*6=p*p+4*p)
不稳定的排序算法?(我做错了)
顺序表顺序查找的平均查找长度是?
S=“structure”中以t为首字符的子串有多少?
高度为5的平衡二叉树至少有几个结点?
从上到下、从左到右、从1开始对完全二叉树结点进行编号,则编号为i的结点的左孩子结点编号为?
编程1:金币发工资。第一天发一枚金币,之后两天(第二天、第三天)每天发两枚金币,之后三天每天发三枚金币,以此类推。即当连续N天每天收到N枚金币后,之后的连续N+1天里每天收N+1个金币。问前n天收了多少金币?
int calcGoldenCoins(int n);
譬如:6=》14;18=》73

int calcGoldenCoins(int n)
{
    int res=0;
    int x=(sqrt(8*n+1)-1)/2;
    for(int i=1;i<=x;++i)
        res+=(i*i);
    int offset = x*(x+1)/2;
    res+=(n-offset)*(x+1);
    return res;
}

我这就比较“淳朴”的做法了。看了网友的:

int calcGoldenCoins(int n)
{
    int res = 0;
    int t = 1;    //标记当天是获得相同金币得第几天
    int s = 1;    //标记当天获得金币
    for(int i=1;i<=n;++i)
    {
        res += s;
        if(t<s)
            t++;
        else
        {
            t = 1;
            s++;
        }
    }
    return res;
}

编程2:水房有m个水龙头,每秒供水量均为1。n名同学接水且顺序固定,i号同学接水量为w[i]。开始接水时,1到m号各占1个水龙头,同时开始接水。某同学j完成接水量w[j]后无缝切换到同学k。若n<m,则n个水龙头供水,其余关闭。先给出n名同学接水量,按上述规则,所有同学完成接水需要多少秒?
譬如:5,3,[4,4,1,2,1]=>4

int water(int n,int m,vector<int>&arr)
{
    int w=0;    //接完水的人数
    for(int i=1;m+w<n;++i)
    {
        for(int j=0;j<m;++j)
        {
            arr[j]+=arr[m+w];
            w++;
        }
    }
    sort(arr.begin(),arr.end());
    return arr[n-1];
}

上述代码同样来自网友,这个模拟的思路,咳咳,学不会啊。

全部评论

相关推荐

吴offer选手:我卡在笔试才是最好笑的,甚至没给我发过笔试链接
投递哔哩哔哩等公司6个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务