完美世界C++笔试

这两题是之前华科宣讲会的原题,当时没有全部做出来,这次都做出来了。
  1. M个苹果放在N个盘子里,盘子可以为空
    #include <bits/stdc++.h>
    using namespace std;
    
    //x个苹果放y个盘子,不能空
    int f(int x, int y);
    
    //x个苹果放y个盘子,能空
    int g(int x, int y);
    
    int f(int x, int y)
    {
        if (x == y || y == 1) {
            return 1;
        }
        return g(x - y, y);
    }
    
    int g(int x, int y)
    {
        int sum = 0;
        for (int i = 1; i <= x && i <= y; ++i) {
            sum += f(x, i);
        }
        return sum;
    }
    
    int main()
    {
        int M, N;
        cin >> M >> N;
        cout << g(M, N) << endl;
    }

  2. 有n个冰面,每个冰面下有一定数量的鱼,现在要打碎冰面捕鱼,但是相邻冰面不能被打碎。
    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int n;
        cin >> n;
        vector<int> fish(n);
        vector<vector<int>> op(n, vector<int>(2));
        for (int i = 0; i < n; ++i) {
            cin >> fish[i];
        }
        op[0][0] = 0;
        op[0][1] = fish[0];
        for (int i = 1; i < fish.size(); ++i) {
            op[i][0] = max(op[i - 1][0], op[i - 1][1]);
            op[i][1] = op[i - 1][0] + fish[i];
        }
        cout << max(op.back()[0], op.back()[1]) << endl;
    }


#完美世界##笔试题目#
全部评论
我也是c++,跟你的不一样
点赞 回复 分享
发布于 2019-09-27 22:59
输入3,7,输出怎么是3
点赞 回复 分享
发布于 2021-10-28 19:18

相关推荐

去B座二楼砸水泥地:不过也可以理解,这种应该没参加过秋招
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 5 评论
分享
牛客网
牛客企业服务