递归实现指数型枚举(从n个数挑任意多个数进行排列)
int N;
int index[MAX];//选中的序列
int u;
void dfs(int a, int n)
{
if (n == N)
{
for (int i = 0; i <= N; i++)
{
cout << index[i];
}
}
dfs(a + 1, n);//不选a分支
index[u++] = a;//选择a分支
dfs(a + 1, n + 1);
u--;//回溯现场
}
int main()
{
cin >> N;
dfs(1, 0);
return 0;
}
递归实现组合型枚举(从n个数挑m个数进行排列)
递归实现排列行枚举(n个数进行全排列)