小編給大家分享一下如何遍歷LINQ序列的所有子集,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)專注于烏當(dāng)網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供烏當(dāng)營銷型網(wǎng)站建設(shè),烏當(dāng)網(wǎng)站制作、烏當(dāng)網(wǎng)頁設(shè)計(jì)、烏當(dāng)網(wǎng)站官網(wǎng)定制、微信小程序服務(wù),打造烏當(dāng)網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供烏當(dāng)網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
遍歷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)該不會是想去遍歷所有的子集,因?yàn)榭赡苓@會耗費(fèi)幾分鐘或更長的時(shí)間。
以上是“如何遍歷LINQ序列的所有子集”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!