可能產生的集合

2022-01-29 09:35:39 字數 1773 閱讀 4786

/*

無字典順序集合

說明:

給定一組數字或符號 , 產生所有可能的集合(包括空集合 ), 例如給定1 2 3 , 則可能的集合為 :

{}、、、、、、、。

解法:

如果不考慮字典順序,則有個簡單的方法可以產生所有的集合,思考二進位數字加法,並注意

1出現的位置,如果每個位置都對應乙個數字,則由1所對應的數字所產生的就是乙個集合,例

如:000 {}

001

010

011

100

101

110

111

了解這個方法之後,剩下的就是如何產生二進位數?有許多方法可以使用,您可以使用unsigne型別加上&位元運算來產生,這邊則是

使用陣列搜 尋,首先陣列內容全為0,找第乙個1,在還沒找到之前將走訪過的內容變為0,而第乙個找到的0則變為 1,如此重複直

到所有的陣列元素都變為1為止,例如:

000 => 100 => 010 => 110 => 001 => 101 => 011 => 111

如果要產生字典順序,例如若有4個元素,則:

{} => => => => =>

=>

=> =>

=>

=> => =>

=>

=> =>

簡單的說,如果有n個元素要產生可能的集合,當依序產生集合時,如果最後乙個元素是n,而倒數第二個元素是m的話,例如:

則下乙個集合就是,再依序加入後續的元素。

例如有四個元素,而當產生集合時,則下乙個集合就是,也就是 ,由 於最後乙個元素還是4,所以下一

個集合就是,也就是,接下來再加入後續元素4,也就是,由於又遇到元素4,所以下乙個集合是,也就是。

*/#include

#include

#define maxsize 20

int main(void

)

printf(

"\n{}");

while(1

)

else

for(i = 0; i < n && digit[i] == '

0'; i++);

printf("\n

}printf("}

");}

printf("\n

");

return0;

}

執行結果:

有字典順序集合

*/#include

#include

#define maxsize 20

int main(void)"

);

set[position] = 1

;

while(1

)

printf("}

");if(set[position]

else

if(position != 0

)

else

}printf("\n

");return0;

}執行結果:

產生可能的集合(C python

給定一組數字或符號 產生所有可能的集合 包括空集合 例如給定1 2 3 則可能的集合為 如果不考慮字典順序,則有個簡單的方法可以產生所有的集合,思考二進位數字加法,並注意1出現的位置,如果每個位置都對應乙個數字,則由1所對應的數字所產生的就是乙個集合,例 如000 001 010 011 100 1...

每日一演算法 產生可能的集合 二

產生可能的集合 說明給定一組數字或符號,產生所有可能的集合 包括空集合 例如給定1 2 3,則可能的集合為 如果要產生字典順序,例如若有4個元素,則 簡單的說,如果有n個元素要產生可能的集合,當依序產生集合時,如果最後乙個元素是n,而倒數第二個元素是m的話,例如 則下乙個集合就是,再依序加入後續的元...

Runtime Error可能產生的原因

runtime error 執行時錯誤 就是程式執行到一半,程式就崩潰了。除以零 陣列越界 int a 3 a 10000000 10 指標越界 int p p int malloc 5 sizeof int p 1000000 10 使用已經釋放的空間 int p p int malloc 5 s...