题目很简单,第一题很快就过了,第二道题过了百分之60,应该是算法不够优化,但是第二题的基本思路就是图的DFS搜索,我现在回想起来,可优化的地方就是“怎么选取城市”这里了。
把题目大致描述出来,供大家参考。如果题目描述错了,希望大家指正!
1. 勇士打怪兽
勇士打怪兽,勇士有一个初始能力值,记为 a ,怪兽有 n 个,每个怪兽有自己的能力值,记为 i 。当 a>=i时,勇士可以打败怪兽,并获得一枚金币。且勇士在任意时刻都可以选择花费一枚金币提升自己1点能力值。
勇士打怪兽的顺序随意,勇士的初始金币为0.
问:
勇士最大可以获得多少金币,怪兽不一定要打完。
输入:
第一行:勇士能力值 a ,怪兽个数 n
第二行:n个数,分别代表怪兽的能力值。
输出:
勇士最大可以获得的金币个数
我的代码(通过):
a,n = map(int,input().split())
ls = [int(i) for i in input().split()] # 怪兽能力值
if min(ls) > a:
print(0)
else:
ls.sort() # 先排序
res = 0
count_m = 0 # 勇士当前的金币数
a_now = a # 勇士当前的能力值
i = 0
l = len(ls)
while i < l: