二進位制方法:
#include
#include
using
namespace
std;
int n ;
vector
con;
void get_sub(int input)
}printf("}\n");
}int main(int argc, char
const *argv)
int i = 0;
while ( '0'
<= length[i] && length[i] <= '9')
if (i == (length.size() ))
else
if (n == 0)
else
printf("您輸入的集合為:
printf("}\n下面輸出其子集:\n");
for (int i = 0; i < (1
<< n); i++)//對於乙個n個元素的集合 其子集有2^n-1個
printf("\n");
printf("該集合總共有子集 %d 個\n", 1
<< n);
}} else
con.clear();
}return
0;}
遞迴方法:
#include
#include
#include
using
namespace
std;
int n;
vector
con;
vector
indexcon;
//indexcon代表下標對應的元素是否在新的集合中。
//con是真正裝載資料的陣列。
void get_sub(vector
indexcon, int pos)
}printf("}\n");
return;
}indexcon[pos] = 0; //不取用pos位置處的元素
get_sub(indexcon, pos + 1);
indexcon[pos] = 1;//取用pos位置處的元素
get_sub(indexcon, pos + 1);
}int main(int argc, char
const *argv)
int i = 0;
while ( '0'
<= length[i] && length[i] <= '9')
if (i == (length.size() ))
else
if (n == 0)
else
printf("您輸入的集合為:
printf("}\n下面輸出其子集:\n");
get_sub(indexcon, 0);
printf("\n");
printf("該集合總共有子集 %d 個\n", 1
<< n);
}} else
con.clear();
indexcon.clear();
}return
0;}
二進位制子集生成
之前看 演算法競賽入門經典 這本書,看到了子集生成部分,以為自己沒有看二進位制法。誰知整理部落格的時候發現很早之前就學習過了,然而我描述的不完整,看了半天沒看懂什麼意思,果然欠下的都是要還的。用二進位制表示子集,其中從右往左第i位 從0開始編號 表示元素i是否在集合中。在集合表示法中,1 i 表示第...
CCS編譯生成二進位制檔案方法
ccs預設生成的檔案時coff格式的,預設.out檔案即為該檔案格式,如果想生成二進位制檔案,如下設定ccs。1 工程 右鍵 show build settings.2 右側build,左邊setps build steps填入下列內容。utils tiobj2bin tiobj2bin bin b...
二進位制列舉子集
利用二進位制的 開關 特性列舉 詳細為 如果給定集合a大小為n,則想象a 的每乙個元素相應乙個開關位 0或1 0表示不出現,1表示出現。當每乙個元素的開關位的值確定時,就得到乙個子集。因此共同擁有2 n 1種情況 全0為空集,這裡不考慮 我們利用區間 1,2 n 1 該區間上的每乙個整數相應乙個子集...