一
# 贪心
def func(arr):
maxp = 0
end = 0
step = 0
for i in range(len(arr)-1):
maxp = max(maxp, i + arr[i])
if end == i:
step = step+1
end = maxp
return step
二
没想出来,谁会欢迎分享
三
# 优先队列使用堆排序
def func(arr):
n, w, k = arr[0][0], arr[0][1], arr[0][2]
# 构建(cost, profit)堆,python堆默认按第一个元素排列
cost = [(arr[1][i], arr[2][i]) for i in range(len(arr[1]))]
profit = []
heapq.heapify(cost)
for i in range(k):
while len(cost) != 0 and cost[0][0] <= w:
num = heapq.heappop(cost)
# python只有小顶堆,所以取负值构建大顶堆
heapq.heappush(profit, -num[1])
if len(profit) == 0:
return w
w -= heapq.heappop(profit)
return w
四
def func(f):
inf = f.readlines()
# 存矩阵
log = []
# 活跃次数
a_times = len(inf)
# 熵
entropy = 0
for i in range(a_times):
log.append(inf[i].rstrip('\n').split(' '))
log = np.array(log)
wifimac = log[:, [1]].reshape(-1)
wifimac_l = set(wifimac)
for i in wifimac_l:
sum = wifimac[wifimac == i].size
probility = sum/a_times
entropy -= probility*math.log(probility, 2)
print('deviceld1:' + str(entropy))
感谢原博主分享题目
原链接