怎樣找出集合中所有子集,怎樣找出集合中指定元素的所有子集?
集合中的組合演算法
Java 沒有自帶的求一個集合的所有子集的方法,我們可以通過集合的子集規律來求。
思路:
對集合中所有元素進行標記,0表示未選中,1表示選中。
示例:
集合{1,2,3,4},長度為4,則 0000
表示一個都不選,0001
表示選數集合中第一個元素 {1},0010
表示選中集合中第二個元素 {2},0011表示選中第一,第二元素 {1,2} …
以此類推,集合{1,2,3,4}的所有集合,包括空集,可以表示為0000
-1111
這樣的二進位制位碼。
我們可以看出集合的所有子集的個數,是2^3=8
個。
由此,可以推理,如果我們需要輸出所有的子集,只需要將每個子集用0001
這樣的二進位制編碼表示,然後按照此二進位制碼輸出選中的元素即可,十進位制0
15
,恰巧可以表示為二進位制0000
-1111
,這樣求集合的所有子集就比較簡單了,所有的子集就是:0
-(2^元素數-1)
表示為二進位制編碼所對應的集合元素的選擇。
於是,根據上面的規律,程式碼可以這樣寫,先取集合的長度,求出2^該集合的長度
是多少,比如上面的16,然後從0遍歷到16-1。
遍歷的時候,對0、1、2…每一個數據進行位運算,逐一判斷其對應的位數,也就是二進位制的表示方式,是1表示選中,0表示未選中。
相關推薦
C中程式設計實現,一個數組中只有兩個數不是成對出現,找出這兩個數
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> void Find(int *arr, int sz, int *p1, int *p2) { int num = 0; int i
08 集合[11,22,33,44,55,66,77,88,99],將所有<66的值保存至字典的第一個key中,將所有>=66的值保存至字典的第二個key中。即:{'k1':<66的所有值,'k2':>=66的所有值}
pen nbsp print bsp [] dict 集合 key app li = [11,22,33,44,55,66,77,88,99]dict = {‘k1‘:[],‘k2‘:[]}for i in li: if i < 66: dict[
命令列中執行Python,找不到匯入包
命令列中執行python,匯入其他目錄包時報找不到包的錯誤,原因是命令列中執行只會搜尋當前目錄下的包, import sys import os curPath = os.path.abspath(os.path.dirname(__file__)) rootPath = os.path.sp
R中讀取檔案,找不到路徑問題 No such file or directory
R中讀取檔案,找不到路徑問題 No such file or directory 近日,讀取檔案時,出現如下問題 > passenger = read.csv('international-
獲取實現了某介面的所有類,並返回該類中自定義的方法的方法名
準備階段: 定義介面和實現介面的類。 interface IMyInterface { void Write(); } /// <summary> /// 實現類1 /// </summary>
找牛牛微信群,找微信牛牛群,牛牛群
找:牛牛微信群,微信牛牛群,牛牛群+V:a1152349148有群,一元一分五元一分,APP上玩群內發紅包結算,正規公司平臺,鎖定唯一牛牛微信群+V:a1152349148 題記:在空白的語境中,無聲的行動已代替了一切不可挑明的家 親情彷彿一棵會長大的樹, 從
分治法:關於選擇演算法,找最大,找最小,同時找最大和最小,找第二大
找最大或者最小,蠻力演算法為最優的演算法,需要比較n-1次 # 這個已經是最優的演算法了,比較n-1次 def findMax(arr): max_pivot = arr[0] for i in range(1,len(arr)): if arr
Try語句中有return,那麽finally中的code會執行嗎?什麽時候執行?
BE soc clas 操作 div code gpo OS 完成 會執行的,在return前,就是執行到return的時候等待finally執行,執行完成之後在return,如果finally中有return,那麽不再執行try裏面的returnfinally 中語句是指
iOS開發之OC與swift開發混編教程,代理的相互呼叫,block的實現。OC呼叫Swift中的代理, OC呼叫Swift中的Block 閉包
本文章將從兩個方向分別介紹 OC 與 swift 混編 1. 第一個方向從 swift工程 中引入 oc類 1. 1 如何在swift的類中使用oc類 1.2 如何在swift中實現oc的代理方法 &
MVVM Light 新手入門(2) :ViewModel / Model 中定義屬性 ,並在View中呼叫 利刃 MVVMLight
今天學習MVVM架構中“屬性”的新增並呼叫,特記錄如下,學習資料均來自於網路,特別感謝翁智華的利刃 MVVMLight系列。 一個視窗的基本模型如下: View(檢視) -> ViewModel (檢視模型)-> 多個Model(模型) 注: 檢視是使用者在螢幕上看到
django將網路中的圖片,儲存成model中的ImageField
有這樣的情形,django個人頭像在model中是: class UserProfile(AbstractUser): """ 使用者 """ name = models.CharField(max_length=30, null=True, blank=True
如何將JSP中的java程式碼中的值,傳入JS程式碼中去
經過大半天的研究摸索,終於弄明白怎麼把JSP中的java程式碼中的值,傳入JS程式碼中去。 由於自己才剛剛開始接觸javaWEB 開發,今天在那兒做使用者登入功能,使用者在未登入時顯示“登入”連結,登入後在原來“登入”的地方,改變為使用者的暱稱!由於自己一點經驗也沒有,以為就一個session就夠了,在
配置在.properties檔案中的常量,在xml檔案中使用
首先你先在.properties檔案中以鍵值對的形式寫好之後,在spring配置檔案先將這個資原始檔初始化成bean,然後再在XML中以${……}的形式取出裡邊的值。 在spring中的配置是: <!-- 配置的資原始檔 --> <bean id=
鍵盤輸入到JTable單元格中的資料,重新整理到JTable中的問題
一個 swing.JTable 的表,各單元的值可以修改一個 Button 按 Button 後 jTable 內值賦給一個數組問題 :修改jTable 的一個單元格後直接按Button, 這個單元的值沒有賦給陣列。 但是如果修改完後,在表格內其他的單元格點選一
iOS開發之OC與swift開發混編教程,代理的相互呼叫,block的實現。OC呼叫Swift中的代理, OC呼叫Swift中的Block 閉包,swift 3.0
最新一些學妹問起,所以抽點時間來寫的,適合入門級別的swift 與 OC 混編 的程式猿。 本文章將從兩個方向分別介紹 OC 與 swift 混編 1. 第一個方向從 swift工程 中引入 oc類 1. 1 如何在swift的類中使用oc類 1
linux下複製目錄下所有檔案,包括隱藏檔案到指定目錄
linux下複製當前目錄下面檔案到目錄b的話: cp -rf * b 這樣子只能複製非隱藏檔案和目錄。 cp -rf .* b 因為.*包含了.和..,這樣子複製會出問題,當前目錄的上一層目錄都可能被複制過去。 這裡可以藉助ls -A命令,來過濾.和..目錄並且包
從資料庫中取出資料,存放到陣列中,然後對資料進行分類顯示
<table width="280" id="zhangdan_wenzi" > <?php //food_typ id 將id存到陣列中 $sqlfood = "SELECT food_type.id FROM food_type ";
Java 類和物件,如何定義Java中的類,如何使用Java中的物件,變數
1.物件的概念 :萬物皆物件,客觀存在的事物皆為物件 2.什麼是面向物件:人關注一個物件,實際上是關注該物件的事務資訊 3.類:類是模子,確定物件將會擁有的特徵(屬性)和行為(方法)
SQL中where in的用法以及mybatis執行查詢語句,可以在plsql中查詢資料,但是在程式中查詢不到
首先我們要知道where是什麼:一個判斷符。在SQL操作中,控制只選擇指定的行。 in的其實歸類於特殊的比較運算子 expr1 between expr2 and expr3:表示expr1的值在expr2和expr3之間 expr in(expr2,expr3,expr4,
C++中的unordered_map,以及與STL中的map的比較
unordered_map是很早就知道的概念,但卻一直沒有認真去理解,單單以為它是Boost庫裡對map的實現,今天在做Leetcode的題目的時候,發現了使用它的優越性,索性翻開書,並查一查資料,把