算法题:消耗的总时间求解问题

算法 专栏收录该内容
1 篇文章 0 订阅

题目(羊吃草):
假设有一群羊,吃一片草堆。

  1. 一个羊单位时间能够吃掉一个单位的草堆;
  2. 同一时间内一个草堆只能被一个羊吃;
  3. 羊群只能由近到远的吃草堆,吃完近处的草堆才能去吃远处的草堆。

羊的个数 n , 1 < n < 1000;
草堆堆数t, 0 < t < 100000;
单个草堆的大小k, 0 < k < 10000;
请问吃完所有的草堆需要花多长时间?
输入 (n, [list])

举例1:
草堆数组:[1, 2, 3, 2]
羊个数:3
总的时间:3
举例2:
草堆数组:[2, 19 , 3, 22 ,3 ,10, 22]
羊的个数:4
总的时间:27


解题思路
累加+找最小数。
建立一个数组,大小等于羊的个数,找到最小数,遍历草堆的每个元素,每次累加到羊数组的最小的位置。最后,结果为数组里面的最大数。

int summary(int n, vector<int> &haystack)
{
    vector<int> sheep(n, 0);
    int tmp=0;
    int index = 0;
    for (auto i : haystack) {
        tmp = sheep[0];
        index = 0;
        for (int j = 1; j < n; j++) {
            if (tmp > sheep[j]) {
                tmp = sheep[j];
                index = j;
            }
        }
        sheep[index] += i;
    }
    for (auto i : sheep) {
        if (i > tmp) {
            tmp = i;
        }
    }
    return tmp;
}
  • 0
    点赞
  • 1
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值