首页 > 代码库 > 某个集合的子集问题
某个集合的子集问题
int WToSigArray(int* A, int n)//消除重复元素 { int i,j,k; for( i = k = 1; i < n; i++) { for( j = 0; j < k; j++) { if(A[j] == A[i]) { break; } } if(j == k) { A[k] = A[i]; k++; } } return k; } int Subset( int* A, int n, int* B, int m, int cur) //集合A,输出m个元素的子集B { static int number = 0; if(cur == m) { number++; for(int i = 0; i< m; i++) { printf("%d ", B[i]); } printf("\n"); } else { for(int i = 0; i < n; i++) { int ok = 1; for(int j = 0; j < cur; j++) { if(B[j] == A[i] || B[j] > A[i]) { ok = 0; } } if(ok) { B[cur] = A[i]; Subset(A, n, B, m, cur + 1); } } } return number; } int WSubset(int* A, int n, int m) { int N = WToSigArray(A, n); printf("to single data:\n"); for(int i = 0; i < N; i++) { printf("%d ", A[i]); } printf("\nSubset:\n"); int cur = 0; int* B = (int*)malloc(sizeof(int)*m); int number = Subset(A, N, B, m, cur); delete [] B; B = NULL; return number; }
某个集合的子集问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。