for(int i = 0; i < (1<<n); i++) // 从0~2^n-1个状态 { for(int j = 0; j < n; j++) // 遍历二进制的每一位 { if(i & (1 << j))// 判断二进制第j位是否存在 { printf("%d ",j);// 如果存在输出第j个元素 } } // 后续处理 } return 满足要求足的状态集或状态数目;