/*執行結果:無字典順序集合
說明:
給定一組數字或符號 , 產生所有可能的集合(包括空集合 ), 例如給定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...