我想要一个描述一组整数的数学表达式。 这组整数应符合以下要求。
假设我有10位。我想生成所有由例如位0,1,2,3,8,9,10组成的整数。例如,该集应该包含例如:
因此,这个集合的大小将是2 ^ 7 = 128个元素,因为我们有7个相关位。
数学表达式看起来应该有点像:{n:Nat | n> = 0&& n< 2 ^ 11&& ...(用相关位做某事)......}
仅供参考我需要为称为MCRL2的语言生成一组自然数。 http://www.mcrl2.org/mcrl2/wiki/index.php/Home
答案 0 :(得分:1)
,即:
int bits[] = {0,1,2,3,8,9,10};
const int length = sizeof(bits)/sizeof(int);
const int setSize = 1<<length;
int set[setSize] = {0};
for(int i=0; i<setSize; i++) {
for(int j=0; j<length; j++)
if(i&1<<j) set[i]+=1<<bits[j];
}
取决于哪些是编译时常量而哪些不是,你可能需要稍微修改一下。