题目描述
blablabla
样例
blablabla
算法1
(暴力枚举) O(n2)
排列和组合枚举,都是利用两重递归,遍历,往左孩子走表示不选,往右孩子走表示选择
我这样时间有点久,2000ms了,因为没有提前加判断,仅仅判断数组p的大小,二叉树的每个叶子节点都会走过
时间复杂度分析:blablabla
C++ 代码
#include <iostream>
#include <vector>
using namespace std;
int n,m;vector<int> p;
void dfs(int a)
{
if (a == n+1)
{ if( p.size() == m)
{
for (int i=0; i < m; i++)
cout<< p[i]<<" ";
cout << endl;
}
}
else
{
p.push_back(a);// 不选
dfs( a+1);
p.pop_back();//选
dfs( a+1);
}
}
int main()
{
cin >> n >> m;
dfs(1 );
return 0;
}