zoukankan      html  css  js  c++  java
  • 百度2015 在线笔试题(3)

    题目

    关键字:兼职问题

    小明需要通过做兼职挣钱,他一天有k点体力,每连续做一次兼职都会消耗1点体力;

    现在有n份兼职,按照时间排序,且互不交叉,给定n份兼职的薪水,小明可以每次挑选m份连续的兼职做;

    问他一天得到的最大薪水?

    分析

    寻找k次 最大字段和(m个)问题!

    程序设计

    #include <iostream>
    #include <cstdlib>
    #include <vector>
    
    using namespace std;
    
    int MaxPay(vector<int> &p, int n, int m, int k)
    {
        int maxPay = 0;
    
        if (m*k >= n)
        {
            int ret = 0;
            for (int i = 0; i < k; i++)
                ret += p[i];
            return ret;
        }
    
        //选过的兼职不可再选
        int flag = -1;
        //k次连续m兼职最大费用
        vector<int> v;
        //挑选k次
        int c = 0;
        while (c < k)
        {
            maxPay = 0;
            int l = 0;
            for (int i = 0; i < n - m + 1 ; i++)
            {
                //每次挑选m个时间连续的兼职
                int sum = 0;
                for (int j = i;  p[i] != flag && j < i + m; j++)
                {
                    sum += p[j];
                }//for
                if (sum > maxPay)
                {
                    maxPay = sum;
                    l = i;          
                }//if           
            }//for
            v.push_back(maxPay);
            for (int j = l; j < l + m; j++)
            {
                p[j] = flag;
            }//for
            c++;
        }//while
    
        int ret = 0;
        for (int i = 0; i < k; i++)
            ret += v[i];
        return ret;
    }
    
    int main()
    {
        int n, m, k;
        cin >> n >> m >> k;
        vector<int> v;
    
        for (int i = 0; i < n; i++)
        {
            int temp;
            cin >> temp;
            v.push_back(temp);
        }//for
        cout << MaxPay(v, n, m, k) << endl;
        system("pause");
        return 0;
    }

    注:题目是听朋友描述,记录下来,日后参考!

  • 相关阅读:
    【JavaScript】--ajax
    【Django】--Models 和ORM以及admin配置
    【Django】--基础知识
    【jQuery】--图片轮播
    双系统 windows引导项添加
    LVM
    linux安全加固
    oracle 11G 配置侦听文件
    LVM
    《virtual san 最佳实践》节选 Virtual SAN的发展与现状
  • 原文地址:https://www.cnblogs.com/shine-yr/p/5214852.html
Copyright © 2011-2022 走看看