我有一個(gè)包含重復(fù)元素的列表,即orig = [1,1,1,2,2,3].我想創(chuàng)建一個(gè)混亂 b = f(orig),以便對(duì)于每個(gè)位置值 inb都不同于值 in orig:b[i] != orig[i], for all i當(dāng)所有元素orig都是唯一的時(shí),我知道一個(gè)解決方案,但這是一個(gè)更難的情況。用 python 開發(fā)解決方案,但任何語言都可以。
2 回答

狐的傳說
TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果您的列表包含大量重復(fù)項(xiàng),則可能很難快速找到混亂。
在這種情況下,您可以嘗試圖形方法。
處理初始列表以制作一個(gè)圖形,其中每個(gè)項(xiàng)目都與不相等的元素相連(易于排序列表)。
然后建立完美匹配(如果元素?cái)?shù)量是偶數(shù))或接近完美匹配(對(duì)于奇數(shù),您需要找到一些合適的配對(duì)并將單個(gè)節(jié)點(diǎn)加入它)。
匹配的邊緣表示交換使混亂。
Python 庫networkx
應(yīng)該包含所需的方法。
添加回答
舉報(bào)
0/150
提交
取消