有大佬遇到过这个问题吗:python中如何实现对数字的分解?

例如,把9分解为不超过5个数字的和,且每个数字为正整数,均大于0小于4,如何利用python程序找到所有的分解情况?
梦里花落0921
浏览 456回答 2
2回答

九州编程

注:已修改少于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]:fromcollectionsimportCounterIn[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]])

吃鸡游戏

fromitertoolsimportcombinations_with_replacement#combinations_with_replacement组合,有重复(有放回抽样组合)S=[]U=[1,2,3]foriinrange(6):forjincombinations_with_replacement(U,i):ifsum(j)==9:S.append(j)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript