void print_subset(int n, int B[], int cur){ if(cur == n){ for(int i=0; i<n; i++) if(B[i]) printf("%d ",i); printf("\n"); return; } B[cur] = 1; //choose element cur print_subset(n, B, cur+1); B[cur] = 0; //not to choose element cur print_subset(n, B, cur+1); }
void print_subset(int n, int* B, int cur) { if(cur == n) { for(int i = 0; i < cur; i++) if(B[i]) printf("%d ", i); // 打印当前集合 printf("\n"); return; } B[cur] = 1; // 选第cur个元素 print_subset(n, B, cur+1); B[cur] = 0; // 不选第cur个元素 print_subset(n, B, cur+1); }
int main(){ int n ; scanf("%d",&n); for(int i = 1;i < (1 << n) ;i ++) print_subset(n,i); return 0 ; }
int main(){ //freopen("time.txt","a",stdout); int n; scanf("%d",&n); for(int i=0; i<(1<<n); i++) print_subset(n, i); //printf("n=%d, way3 time used: %.6lfs\n",n, (double)clock()/CLOCKS_PER_SEC); return 0; }
void print_subset(int n, int* A, int cur) { for(int i = 0; i < cur; i++) printf("%d ", A[i]); // 打印当前集合 printf("\n"); int s = cur ? A[cur-1]+1 : 0; // 确定当前元素的最小可能值 for(int i = s; i < n; i++) { A[cur] = i; print_subset(n, A, cur+1); // 递归构造子集 } }
//#include<ctime> void print_subset(int n, int *A, int cur){ for(int i=0; i<cur; i++) printf("%d ",A[i]); printf("\n"); //首行为空,代表空集 int s = cur ? A[cur-1]+1 : 0; for(int i=s; i<n; i++){ A[cur] = i; print_subset(n, A, cur+1); } }
int main(){ //freopen("time.txt","a",stdout); int n, A[maxn]; //n = 30; scanf("%d",&n); print_subset(n, A, 0); //printf("n=%d, way1 time used: %.6lfs\n",n, (double)clock()/CLOCKS_PER_SEC); return 0; }
int main() { int n; while(scanf("%d",&n)!=EOF) { int *a=new int[n]; //for(int i=1;i<=n;++i) a[i-1]=i; print_subset(n,a,0); delete a; } return 0; }
void print_subset(int n,int* a,int cur) { /*for(int i=0;i<cur;++i) printf("%d ",a[i]); printf("\n"); int s=cur?a[cur-1]+1:0; for(int i=s;i<n;++i) { a[cur]=i; print_subset(n,a,cur+1); }*/ if(cur==n) { for(int i=0;i<cur;++i) { if(a[i]) printf("%d ",i); } printf("\n"); return; } a[cur]=1; print_subset(n,a,cur+1); a[cur]=0; print_subset(n,a,cur+1); }
int main() { print_subset(5, B, 0); return 0; }
int topk(Bit **models, double *prob, int k, struct Var *vars, int n, int p) { int rank; /* index */ int tablesize; /* Number of entries in the subset table. */ int i, current, qsize, queuesize; Bit *model; /* output for current model */ double *list; /* The list of numbers (logits). */ double *subsetsum; /* Sum of some subset. */ int *type; /* How does subset differ from parent? */ int *queue; /* Subset number of item in priority queue. */ int *parent; /* Parent of given subset. */ int *position; /* Bit position of rightmost 1 bit. */ int *pattern; /* Subset that differs only in bit position. */ char *bits; /* Ask for too many models? */ if (log((double) k)/log((double) 2.0) > (double) n) { REprintf("Warning: Asked for %d models, but there are only 2^%d with non-zero prob.\n", k, n); k = 1<<n; } /* Rprintf("Deterministic sample of (approx) top %d models\n", k); */ list = (double *) R_alloc(n, sizeof(double)); for (i = 0; i < n; i++) list[i] = vars[i].logit; model = (unsigned char *) R_alloc(n, sizeof(Bit)); qsize = 2*k; /* Largest number of items in priority queue. */ subsetsum = (double *) R_alloc(qsize, sizeof(double)); parent = (int *) R_alloc(qsize, sizeof(int)); type =(int *) R_alloc(qsize, sizeof(int)); position = (int *) R_alloc(qsize, sizeof(int)); pattern = (int *) R_alloc(qsize, sizeof(int)); queue = (int *) R_alloc(qsize, sizeof(int)); bits = (char *) R_alloc(n, sizeof(char)); queuesize = 0; /* Store relevant information for root node. */ for(i = 0; i < n; subsetsum[0] += list[i], i++) ; parent[0] = -1; position[0] = -1; type[0] = 0; tablesize = 1; pattern[0] = -1; print_subset(0, 0, models, model, subsetsum, pattern, position, n, vars, p); insert_children(0, list, subsetsum, queue, &queuesize, &tablesize, parent,pattern, position,type, bits, n); for (rank = 1; rank < k-1; rank++) { current = get_next(subsetsum, queue, &queuesize); print_subset(current, rank, models, model, subsetsum, pattern, position, n, vars, p); insert_children(current, list, subsetsum, queue, &queuesize, &tablesize, parent, pattern, position, type, bits,n); } if (k > 1) print_subset(queue[0], k-1, models, model, subsetsum, pattern, position, n, vars, p); /* Last one. */ return(k); }