PAT 甲级 1048 Find Coins
生活随笔
收集整理的這篇文章主要介紹了
PAT 甲级 1048 Find Coins
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1048 Find Coins
題目大意:給出目標價格m,要求找出兩個硬幣和恰好等于m。如果沒有解輸出No Solution;若不止一組解則輸出coins[i]+coins[j]=m中i最小的解
思路:首先不能暴力求解,肯定超時。先對硬幣進行排序,然后用二分法來查找。注意不能直接用二分,依然會超時,先提前用set去重,因為要求的是硬幣面額而不是下標。
def findCoins(l,r,m):global coinsif coins[l]+coins[r]==m:return rleft,right=l,rmid=int((left+right)/2)while left<right:if coins[l]+coins[mid]<m:left=mid+1mid=int((left+right)/2)elif coins[l]+coins[mid]>m:right=mid-1mid=int((left+right)/2)else:return midreturn -1n,m=map(int,input().split()) coins=list(map(int,input().split())) coins=list(set(coins)) coins.sort() flag=False for i in range(n):j=findCoins(i,len(coins)-1,m)if j!=-1:flag=Trueprint(coins[i],coins[j])break if not flag:print("No Solution")總結
以上是生活随笔為你收集整理的PAT 甲级 1048 Find Coins的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 风格迁移篇--StarGAN:用于多域图
- 下一篇: 关于语法节点Tree、类型Type和符号