ts = ['t1','t2','t3',...,'tn']
的名單有實現這一條款的所有可能的Q-長度組合的任務。
因此,
ts = ['t1','t2']
q = 4
答案是
[['t1','t1','t1','t1'],['t1','t2','t2','t2'],['t1','t1','t2','t2'],
['t1','t1','t1','t2'],['t2','t2','t2','t2']]
這裏是我的解決方案
powers = np.array(list(itertools.product(*[range(q+1)]*len(ts))))
powers = powers[np.where(np.asarray(map(sum, powers))==q)]
res = map(lambda ps_: flatten([ p*[t] for p,t in zip(ps_,ts) ]), powers)
其中flatten是從列表的列表產生列表功能。
雖然有解決方案,產生所需的結果,我想知道是否有更簡單的方法來解決這個問題?
這些不是排列組合。他們可能與替換組合。 –
謝謝,我錯過了,做了一個更正。 – tarashypka