天天看點

一段python代碼,

def ss(n,numlist):
    #功能:用numlist裡面的數字,随意組合,使它們的和湊成n
    
    #給清單排序,将大數放前面,以便先嘗試大數
    numlist.sort(reverse=True)

    #如果n小于最小對的數,嘗試失敗,傳回0
    if (n<min(numlist)):
        return '0'
    
    #逐一核對,如果n剛好等于numlist清單的某個數,組合成功。
    for i in numlist:
        if n==i:
            return str(i)

    #逐一疊代,如果傳回的值第一個字元不是0,表示嘗試成功,傳回值。    
    for i in numlist:        
        ti=ss(n-i,numlist)
        if ti[0]!='0':
            return ti+'+'+str(i)
        else:
            del ti

    #如果上面有嘗試成功,這句話不會被執行,
    #以上嘗試失敗,會執行下面的語句,傳回0
    return '0'


for i in range(100,200):
    t=ss(i,[61,71,17,19])
    if t!='0':
        print(str(i)+"="+t)
    else:
        print(str(i)+"=無解!")