依旧很烧脑,挣扎了一下午……
想来想去,我觉得我也没必要死磕它的原理了,会写就行,写多了就自然而然的懂了。
直接放代码咯!
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
typedef long long ll;
int m,k,ans[15],v[15];
void dfs(int cur,int step) /**< 在数组[cur,n]区间选择 */
{
int i;
if(step==k+1)/**< 参数step记录已经选择的数量 */
{
for(i=1; i<=k; i++)
cout<<ans[i]<<' ';
cout<<endl;
return;
}
for(i=cur; i<=m; i++)
{
ans[step]=i;/**< 选中i为第step个数字 */
dfs(i+1,step+1);
}
}
int main()
{
cin>>m>>k;
dfs(1,1);
return 0;
}
这是我的演算过程,大家在写的时候遇到问题可以参谋一下下。