產生可能的集合
說明給定一組數字或符號,產生所有可能的集合(包括空集合),例如給定1 2 3,
則可能的集合為:{}、、、、、、、。
如果要產生字典順序,例如若有4個元素,則:
{} => => => => =>
=>
=> =>
=>
=> => =>
=>
=> =>
簡單的說,如果有n個元素要產生可能的集合,當依序產生集合時,如果最後乙個元素是n,
而倒數第二個元素是m的話,例如:
則下乙個集合就是,再依序加入後續的元素。
例如有四個元素,而當產生集合時,則下乙個集合就是,
也就是,由於最後乙個元素還是4,所以下乙個集合就是,也就是,
接下來再加入後續元素4,也就是,由於又遇到元素4,所以下乙個集合是,也就是。
#include #define maxsize 20
int main()
"); set[position] = 1;
while (1)
printf("}");
if (set[position] < n)
else if (position != 0)
else
}printf("\n");
return 0;
}
每日一演算法
leetcode 75 號題 給定乙個包含紅色 白色和藍色,一共 n 個元素的陣列,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色 白色 藍色順序排列。此題中,我們使用整數 0 1 和 2 分別表示紅色 白色和藍色。注意 不能使用 庫中的排序函式來解決這道題。示例 輸入 2,0,2,1,1,...
每日一演算法
答主大二,這學期剛開了資料結構與演算法的課程,但課堂上只提及基礎的增刪改查,遠遠不能滿足對資料結構相對熟悉的需求,因而答主便有了 每日演算法 專題練習的想法,有需要的可以共同練習,與君共勉 適用人群 資料結構與演算法初學者 題型大多來自leetcode 請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 ...
每日一演算法1
插入排序 首先來解釋一下插入排序法的原理 它的原理是每插入乙個數都要將它和之前的已經完成排序的序列進行重新排序,也就是要找到新插入的數對應原序列中的位置。那麼也就是說,每次插入乙個數都要對原來排序好的那部分序列進行重新的排序,時間複雜度同樣為o n 這種演算法是穩定的排序方法。下面我用乙個圖來解釋一...