竞赛
考级
AC君
法兰西玫瑰
回来看看
大家好,我是ЭНТДЖЕЙ,今天是我2026年第二次正式发题解! 2026年发布的题解! 能不能点个赞 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 回归正题: 首先: * 我看到这道题就是想到用dfs写 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 紧接着: * 我们要找到dfs的入参: * 确定下来,入参需要: 当前已经选了多少个数字(current )、上一个的数字(last number)、和一个用于输出的数组(这里用了vector) * 即: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ * 我们要确定dfs的终止条件: * 也就是 使用的数字个数达到了k * 即: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ * 我们要递归一下了: * 很简单,就是一个一个试数字: * 即: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ * 好那么差不多结束了,在正常输入一下和调用函数,打一下头文件和using,定义一下即: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 那么好了!“合成”: 就是完整代码啦 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 🎉完结撒花🎉
энтджей
又是一道深搜题,刚看第一眼,怎么感觉和A7989.全排列问题那么像呢? 是的,这两题的区别就在输出格式和输入上,真的很像。 把代码套上—— 好,我们看到setw( )这个函数。 它是干嘛的呢?我们科普一下——setw( )函数主要用于控制输出的宽度,即设置输出字段的宽度。 setw( )的使用注意事项 好,这题就这么解,可以把A7989.全排列问题也做一下。
Sleepy~yo
#include <bits/stdc++.h> using namespace std; int n,r,a[25],k=1; bool vis[25]; void dfs(int t){ if(t>r){ for(int i=1;i<=r;i++) cout<<" "<<a[i]; cout<<endl; return; } for(int i=1;i<=n;i++){ if(!vis[i]&&a[t-1]<i){ vis[i]=true; a[t]=i; dfs(t+1); vis[i]=false; } } } int main(){ cin>>n>>r; dfs(1); return 0; }
Voldemort
飞的智动
(狱出)༺ཌༀ猫条一ༀད༻
#include<bits/stdc++.h> using namespace std; int n,r,a[21]; bool vis[21]; void dfs(int sum){ if(sum>r){ for(int i=1;i<=r;i++){ cout<<" "<<a[i]; } cout<<endl; return ; } for(int i=a[sum-1]+1;i<=n;i++){ if(!vis[i]){ vis[i]=1; a[sum]=i; dfs(sum+1); vis[i]=0; } } } int main() { cin>>n>>r; dfs(1); return 0; }
™
准
哒烧叶
狗菜是我之生重
****#include <iostream> using namespace std; const int MAX_N = 25; int n, r, arr[MAX_N], k = 1; bool visited[MAX_N]; void dfs(int idx) { if (idx > r) { for (int i = 1; i <= r; i++) cout << " " << arr[i]; cout << endl; return; } for (int i = 1; i <= n; i++) { if (!visited[i] && arr[idx - 1] < i) { visited[i] = true; arr[idx] = i; dfs(idx + 1); visited[i] = false; } } } int main() { cin >> n >> r; dfs(1); return 0; } ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 链接描述
茉莉与你
注意输出格式是先输出空格再输出数字。
毛奕程
提交答案之后,这里将显示提交结果~