您好,登錄后才能下訂單哦!
小編給大家分享一下如何遍歷LINQ序列的所有子集,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
遍歷LINQ序列的所有子集
有的時(shí)候,遍歷數(shù)組的所有子集很有用。子集和問題、布爾可滿足性問題以及背包問題都可以通過遍歷某個(gè)序列的所有子集來簡單解決。
有了LINQ,我們可以如下聲場所有arr數(shù)組的子集:
T[] arr = ...;
var subsets = from m in Enumerable.Range(0, 1 << arr.Length)
select from i in Enumerable.Range(0, arr.Length) where
(m & (1 << i)) != 0 select arr[i];
注意,如果子集的個(gè)數(shù)超過了int,上面的代碼就不能工作。因此,僅當(dāng)你知道arr的長度不超過30的時(shí)候才去使用這個(gè)方式。如果arr長度超過30,你應(yīng)該不會(huì)是想去遍歷所有的子集,因?yàn)榭赡苓@會(huì)耗費(fèi)幾分鐘或更長的時(shí)間。
以上是“如何遍歷LINQ序列的所有子集”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。