python数字排列组合去重_排列组合-生成集合的所有子集
//一個有N個不重復元素的集合的某個子集,可以用這個N個元素中每個元素在或是不在這個子集中來表示。
//把這N個元素一字排開,每個位置可以用1來標識對應位置的元素在子集中,用0來標識這個元素不在子集中
//依據計數的乘法原理這樣的排列數有2^N個,也就是一個有N個不重復元素的集合有2^N個子集。
//而這種10表示方式剛好與N元的二進制串一一對應。
public class CombinationAll
{
public static void main(String[] args)
{
//指定集合的元素個數N
int N=Integer.parseInt(args[0]);
//使用一個長度為N的一維數組來表示N元的2進制串
int[] bin=new int[N];
//并從00...000開始,到11..111結束。
//由于檢查11...111會花費較多的比較,改用計數器來實現。
for(int i=0;i
bin[i]=0;
show(bin);
//計數器標識還剩多少個子集沒有列出
double Total=Math.pow(2,N)-1;
//二進制串每次增加1,計數器每次減1
int i;
while(Total>0)
{
//從低位向高位找到第一個0,然后將這個0變成1,將這個位置后面的1全變成0
for(i=N-1;i>=0 && bin[i]==1;i--)
bin[i]=0;
bin[i]=1;
show(bin);
Total--;
}
}
//顯示這個數組中的二進制串
private static void show(int[] bin)
{
for(int i=0;i
StdOut.printf("%d",bin[i]);
StdOut.println();
}
}
總結
以上是生活随笔為你收集整理的python数字排列组合去重_排列组合-生成集合的所有子集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 笔记本在Win7下使用wubi安装Ubu
- 下一篇: python导入文件-如何导入其他Pyt