- 论坛徽章:
- 3
|
回复 6# BlueGuy_
大侠, 麻烦给看看是不是这个啊.
这个好像是排列的, 大侠给个组合的嘛.- #include <stdio.h>
- #define LEN 10
- // index: 记录下标
- // mark: 记录是否选取过
- // a: 要排列的数组
- // n: 数组中元素个数
- // m: 要从 n 个元素中选多少个
- // depth: 递归深度
- void perm_dfs(int index[], int mark[], int a[], int n, int m, int depth)
- {
- int i;
- if (depth == m)
- {
- for (i = 0; i < m; i++)
- printf("%d ", a[index[i]]);
- putchar('\n');
- }
- else
- {
- for (i = 0; i < n; i++)
- {
- if (0 == mark[i])
- {
- index[depth] = i;
- mark[i] = 1;
- perm_dfs(index, mark, a, n, m, depth + 1);
- mark[i] = 0;
- }
- }
- }
- }
- int main(void)
- {
- int index[LEN], mark[LEN] = { };
- int a[LEN] = { 4, 6, 8, 9 };
- perm_dfs(index, mark, a, 4, 4, 0);
- return 0;
- }
复制代码 |
|