#include #include using namespace std;
#define n 10 //代表生成0-9的子集
void print_subset(int n, int* a, int cur);
void print_subset(int n, int* a, int cur)
printf("\n"); //輸出集合後,要輸出乙個回車進行分隔(因此,當cur等於0時這裡輸出的是空集)
int s = cur ? a[cur - 1] + 1 : 0; //s代表確定當前元素的最小可能值(例如a中已經有了乙個元素0,那麼下次遞迴時cur就是1,那麼當前元素的最小可能值就是a[cur-1]+1(因為a之中的元素編號都是從小到大排列的,這是定序的技巧(避免同乙個集合列舉兩次,例如:集合輸出時只能為而不能為)
for (i = s; i < n; i++)
}int main()
#include #include using namespace std;
#define n 10
void print_subset(int n, int* b, int cur); //代表構造位向量法的函式
void print_subset(int n, int* b, int cur)
} printf("\n"); //輸出回車以分隔集合
return; //輸出完集合後,我們要進行返回(回溯)以便於輸出下乙個集合
} b[cur] = 1; //代表選擇當前元素(cur)新增到集合中
print_subset(n, b, cur + 1); //進行遞迴以便於選擇下乙個元素
b[cur] = 0; //代表不選擇當前元素(cur)新增到集合中
print_subset(n, b, cur + 1); //進行遞迴以便於選擇下乙個元素
void print_subset(int n, int s); //代表構造二進位制法的函式
void print_subset(int n, int s)
} printf("\n");
}int main()
}
for (i = 0; i < n; i++)
}
C 子集生成方法
這道題是資料結構 演算法與應用c 的書籍的練習題25題,首先我先列出詳細題目 編寫乙個c 遞迴函式,輸出n個元素的所有子集。例如,三元素集的子集是 空集 這些子集用0 1組成的 序列來表示分別是000,100,010,001,110,101,011,111 0表示相應的元素不在子集中,1表示相應的元...
NSArray的一些方法
nsarray 不可變陣列類 建立只有乙個元素的陣列 arraywithobject nsarray建立的陣列內部存放的元素必須是 物件 型別 nsarray array nsarray arraywithobject 1 arraywithobject接收的引數是 物件 型別資料,1 可以看做是乙...
NSString的一些方法
1.建立字串 直接賦值 nsstring str1 iphone nslog str1 僅僅是初始化而沒有賦值 nsstring str2 nsstringalloc init nslog str2 initwithstring的作用 將initwithstring後面的值拷貝到開闢的空間中 ini...