2013-01-08 35 views
-3

如何獲得陣列位置可以被選取的所有可能的方式?對於大小爲2的數組,ex爲 有三種可能性第一元素,第二元素和兩個元素。大小爲3的數組的可能性是第一,第二,第三,第一和第二,第一和第三,第二和第三,以及最後的第一和第二。 我想要一個簡單的嵌套循環..如何獲取陣列位置的所有可能方法?

回答

1

嵌套循環不是真的在這裏答案,因爲嵌套的深度將取決於數組的大小。

所以你認爲二進制:大小-N陣列的子集對應於右長度的非零二進制數,因此這樣做

for (int subset_c = 1; subset_c < (1<<N); subset_c++) 
{ 
    { start thinking about a new subset } 
    for (int j=0; j<N; j++) 
    { 
     if ((subset_c>>j)&1) { the subset should contain array[j] } 
    } 
} 
+0

井大小非常小,所以嵌套循環也會這樣做? –

+0

所以我想要嵌套循環的東西...完全蠻力.. :) –

0

您正在尋找產生所有算法{0,1 ...,n-1}的可能子集,並且有很多方法可以做到這一點。嘗試快速搜索「生成所有子集」,您應該找到大量解決此問題的好方法。兩種主要方法涉及遞歸生成子集和使用二進制數字。

希望這會有所幫助!

相關問題