激活符文的最小水晶数量(python、贪心算法)
思路:
优先在右边放置水晶,右边不行再放左边。两边都不行,说明激活不了,任务失败。
def f(nums,n): if n==1: print(-1) return -1 needed=0 for i in range(n): if nums[i]==1: #只有当前是符文的时候,才处理 if i>0 and nums[i-1]==2: continue if i<n-1 and nums[i+1]==0: #先防止在左边 nums[i+1]=2 needed+=1 elif i>0 and nums[i-1]==0: #左边不行放置在右边 nums[i-1]=2 needed+=1 else: #两边都不行,任务失败 print(-1) return -1 print(needed) return needed def main(): n=int(input()) line=input() nums=list(map(int,line.split())) f(nums,n) if __name__=="__main__": main()