题解 (里面有一些我自己的理解)

raoyueyang  •  2年前


include<bits/stdc++.h>

using namespace std;

int n,m,a[30];//a[]保存的是将要输出的数

void print() {

for (int i = 0; i < m; i++)
    cout << a[i];
cout << endl;
return ;//输出完回潮到dfs上一步

} void ryy(int sum)//目前选了多少个数 {

if(m==sum)//如果已经取到上线
print();//输出并回潮
else
{
    for(int i=a[sum-1]+1; i<=n; ++i)//从a[k-1]加1开始枚举递归出下一个值
    {
        a[sum] = i;
        ryy(sum+1);//递归
        /*
  • 比如
  • sum = 3;
  • n = n;
  • 输出完成后返回时
  • sum不变返回dfs;
  • sum = 3;
  • 3 = ++i;
  • 3 = 4
  • a[3] = 4; 满足条件输出1 2 4; /
     }
    

    } } int main() { cin>>n>>m; ryy(0);//函数开始递归递归 return 0; }


Comments:

请使用Markdown。


ZZQ  •  2年前

希丰展?使md.


_  •  2年前