蓝桥杯|蓝桥杯——1.5递归实现组合型枚举

题目描述:
【蓝桥杯|蓝桥杯——1.5递归实现组合型枚举】蓝桥杯|蓝桥杯——1.5递归实现组合型枚举
文章图片

蓝桥杯|蓝桥杯——1.5递归实现组合型枚举
文章图片

AC代码

// 动态数组的dfs,好理解 /* 我们只需要基于之前的模板,加上超过了m个数 的特判和剩下的数不足m的剪枝两个操作,就很 好理解了 */ #include #include #include using namespace std; int n, m; vector path; void dfs(int u) { if (path.size() > m || path.size() + (n - u + 1) < m)// 条件特判和剪枝 return ; if (u == n + 1)// 递归达到了终点 { for (int i = 0; i < path.size(); i ++) cout << path[i] << " "; cout << endl; return ; }// 选 path.push_back(u); dfs(u + 1); // 恢复现场 path.pop_back(); // 不选 dfs(u + 1); }int main() { cin >> n >> m; dfs(1); return 0; }

    推荐阅读