我试图生成大小3的具体布尔向量中的所有可能的子集所以应该有8项可能的子集:产生子集递归
#include<iostream>
#include<fstream>
#include<string>
#include<stdio.h>
#include<stdlib.h>
#include<vector>
using namespace std;
int n = 3;
int mis(vector<bool> f,int i){
for(int j=0; j <f.size();j++)
cout<<f[i]<<" ";
cout<<endl;
f[i] = false;
return mis(f,i+1);
f[i] = true;
return mis(f,i+1);
}
int main(){
vector<bool> f;
f.resize(n);
int m = mis(f,0);
}
,我发现了以下错误:
a.out: malloc.c:3096: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.
Aborted
它运行在一个无限循环中。部分代码也无法访问。你的意思是说有一个if语句而不是分配true/false? –
不,但我的解决方案不正确。我试图为大小为3的bool向量生成所有可能的子集:000 111 110 101 011 001 010 100 – jkjk
是'cout << f [i] <<“”;'假设是j? –