笔记精选
薯队长写了n篇笔记,编号从1~n,每篇笔记都获得了不少点赞数。
薯队长想从中选出一些笔记,作一个精选集合。挑选的时候有两个规则:
1.不能出现连续编号的笔记。
2.总点赞总数最多
如果满足1,2条件有多种方案,挑选笔记总数最少的那种
输入描述:
输入包含两行。第一行整数n表示多少篇笔记。 第二行n个整数分别表示n篇笔记的获得的点赞数。
(0<n<=1000, 0<=点赞数<=1000)
输出描述:
输出两个整数x,y。空格分割。
x表示总点赞数,y表示挑选的笔记总数。
输入例子1:
4
1 2 3 1
输出例子1:
4 2
参考:
动态规划,与打家劫舍类似
n = int(input()) num = list(map(int,input().strip().split())) if n <= 2: r = max(num) print(r,end=' ') print(1) else: dp = [] dp.append(num[0]) dp.append(max(num[0],num[1])) d = [] d.append(1) d.append(1) for i in range(2,n): dp.append(max(dp[i-1],dp[i-2]+num[i])) if dp[i-1]<dp[i-2]+num[i]: d.append(d[i-2]+1) else: d.append(d[i-1]) print(dp[-1],end=' ') print(d[-1])
您的代码已保存
答案正确:恭喜!您提交的程序通过了所有的测试用例

浙公网安备 33010602011771号