亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

新手上路,python中如何實現對數字的分解?

新手上路,python中如何實現對數字的分解?

料青山看我應如是 2019-09-09 21:33:18
例如,把9分解為不超過5個數字的和,且每個數字為正整數,均大于0小于4,如何利用python程序找到所有的分解情況?
查看完整描述

2 回答

?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

注:已修改少于5個數相加的情況。
比較傻的方法,先暴力求所有組合,然后根據Counter統計頻次,頻次不同的就是不同組合。
In[1]:res_list=[]
In[2]:foriinrange(0,4):
...:forjinrange(0,4):
...:forkinrange(0,4):
...:forlinrange(0,4):
...:forminrange(0,4):
...:ifi+j+k+l+m==9:
...:res_list.append([i,j,k,l,m])
...:
In[3]:fromcollectionsimportCounter
In[4]:dic=dict()
In[5]:forlistinres_list:
...:k=str(Counter(list))
...:ifknotindic:
...:dic[k]=list
...:
In[6]:dic.values()
Out[6]:dict_values([[0,0,3,3,3],[0,1,2,3,3],[0,2,1,3,3],[0,2,2,2,3],[1,0,2,3,3],[1,1,1,3,3],[1,1,2,2,3],[1,2,0,3,3],[1,2,2,2,2],[2,0,1,3,3],[2,1,0,3,3],[2,1,1,2,3],[2,2,2,3,0]])
                            
查看完整回答
反對 回復 2019-09-09
?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

fromitertoolsimportcombinations_with_replacement
#combinations_with_replacement組合,有重復(有放回抽樣組合)
S=[]
U=[1,2,3]
foriinrange(6):
forjincombinations_with_replacement(U,i):
ifsum(j)==9:
S.append(j)
                            
查看完整回答
反對 回復 2019-09-09
  • 2 回答
  • 0 關注
  • 261 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號