2 条题解
-
1
蒟蒻の题解
这道题大部分人第一眼看上去会觉得难,为什么呢?因为他这里的题意太过于《抽象》,我们看数据可能会好懂一些。 其实我们仔细看数据的话,一些学过排列组合的同学就会说了:
这不就是几个排列组合叠加在一起嘛。
嗯,是的,这道题你仔细看数据就会发现,那么恭喜你,你已经成功
猜想出了这道题的基本思路,这道题只需要用dfs去模拟排列组合的过程,然后再多来几次就行啦。
没错,就是这么“简单”
#include<bits/stdc++.h> using namespace std; int n,m; int b[20]; void dfs(int s,int last){ if(s>m){ for(int i=1;i<=m;i++) cout<<b[i]<<" "; cout<<endl; return; }for(int i=last+1;i<=n;i++){ b[s]=i; dfs(s+1,i); } } int main(){ cin>>n; for(m=1;m<=n;m++){ dfs(1,0); } return 0; }
bye
信息
- ID
- 5
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 4
- 标签
- 递交数
- 598
- 已通过
- 280
- 上传者