#include <iostream> using namespace std; const int n = 4; int x[n]; char str[n][50] = {'id','name','sex','age'}; //回溯法 void backtrack(int t) { if(t >= n) { for(int i = 0; i < n; i++) cout<<x[i]; cout<<endl; } else { for(int i = 0; i <= 1; i++) { x[t] = i; backtrack(t + 1); } } } //位运算 void bitOperate() { for(int i = 0; i < (1 << n); i++) { for(int j = 0; j < n; j++) { if( (i & (1 << j) ) == 0) x[j] = 0; else x[j] = 1; } for(int j = 0; j < n; j++) { //cout<<x[j]; if(x[j] != 0) cout<<str[j]; } cout<<endl; } } int main() { //backtrack(0); //cout<<endl; bitOperate(); return 0; } 回溯法还不明确,加紧学习