网易 2019内推 笔试编程题 |1|

本文针对网易笔试中的一道编程题进行了解析,题目要求在考虑小易的瞌睡状态和兴趣评分的情况下,通过合理安排叫醒时机来最大化课程的整体评分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网易笔试编程题1

背景:小易上课打瞌睡,但是又不想错过自己喜欢的内容,于是将一节课划分为n个时间段,每个时间段根据小易的兴趣给定一个评分,每节课可以叫醒小易一次,叫醒一次保持k个时间段,怎么使小易这个课评分最高?
输入:
n,k
小易每个时间段兴趣评分
小易每个时间段是否瞌睡:0,瞌睡;1,清醒
示例1:
6 3
2 3 4 5 3 1
1 1 0 1 0 0

17
示例2:
6 3
2 3 4 5 3 1
1 1 1 1 0 0

18
代码如下:

# encoding=utf-8
import copy
n,k = [int(each) for each in input().split()]
a = [int(each) for each in input().split()]
b = [int(each) for each in input().split()]

def Find(n,k,a,b):
    len_a = len(a)
    len_b = len(b)
    sord = []
    for i in range(len_b-k+1):
        sum = 0
        c = copy.deepcopy(b)
        if c[i] == 0:
            for j in range(i,i+k):
                c[j] = 1
            for j in range(len_a):
                sum = sum + a[j]*c[j]
            sord.append(sum)
    if b[len_b-k] != 0:
        c = copy.deepcopy(b)
        sum = 0
        for j in range(len_b-k+1,len_b):
            c[j] = 1
        for j in range(len_a):
            sum = sum + a[j]*c[j]
        sord.append(sum)
    result = max(sord)
    return result
print(Find(n,k,a,b))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值