回复 20楼 mfkblue
有赋值 当d=0时 i=0 则 x[d]=i也就是 x[0]=0 后面 d=1时 x[d-1]也就是 x[0] 都有被赋值
#include <iostream> #include <queue> using namespace std; char a[]="abc"; const int n=sizeof(a)-1; void Out(int data) { putchar('{'); for(int i=0;i<n;i++) { if(data&(1<<(n-1-i))) { putchar(a[i]); } } putchar('}'); putchar('\n'); } void bfs() { queue<int> Q; Q.push(1<<n); while(!Q.empty()) { int t = Q.front(); Q.pop(); Out(t); for(int i=((t&(-t))>>1); i; i>>=1) { Q.push(t | i); } } } int main() { bfs(); }