產生可能的集合(C python

2021-08-11 05:05:51 字數 1592 閱讀 5506

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

{}、、、、、、、。

如果不考慮字典順序,則有個簡單的方法可以產生所有的集合,思考二進位數字加法,並注意1出現的位置,如果每個位置都對應乙個數字,則由1所對應的數字所產生的就是乙個集合,例

如000 {}

001

010

011

100

101

110

111

了解這個方法之後,剩下的就是如何產生二進位數?有許多方法可以使用,您可以使用unsigned型別加上&位元運算來產生,這邊則是使用陣列搜 尋,首先陣列內容全為0,找第乙個1,在還

沒找到之前將走訪過的內容變為0,而第乙個找到的0則變為 1,如此重複直到所有的陣列元素

都變為1為止,例如:

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

#include

#include

#define n 10

int main()

");//空集

printf("\n");

//產生二進位制數

while (1)

printf("}\n");

}system("pause");

return

0;}

如果有n個元素要產生可能的集合,當依序產生集合時,如果最後乙個元素是n,而

倒數第二個元素是m的話,例如:

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

拿來說:

(1){},尾數不是4,加1,,尾數不是4,加1,,同理,。

(2)尾數為4,下乙個集合為,即,維數為4,下乙個集合為即,尾數不是4,進行第一步,,為4進行第二步,>>>>>><<<<<<<<,當第乙個數為4,時退出

# -*- coding: utf-8 -*-

"""created on thu nov 23 10:23:48 2017

@author: yangwenbin

"""import numpy as np

if __name__=="__main__":

#print("請輸入集合數:")

num=int(input("請輸入集合數:"))

digit=np.zeros(num)

p=0digit[0]=1

print('')

while

1: print('')

print()

if digit[p]#上述第一步

digit[p+1]=digit[p]+1

p+=1

pass

elif digit[p]==num and p!=0:# 上述第二步

p-=1

digit[p]+=1

pass

elif digit[0]==num:

break

pass

pass

可能產生的集合

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

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

產生可能的集合 說明給定一組數字或符號,產生所有可能的集合 包括空集合 例如給定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...