题目描述
题目描述
从 1到n 这 n 个整数中随机选取任意多个,每种方案里的数从小到大排列,按字典序输出所有可能的选择方案。
输入
输入一个整数 n。(1≤n≤10)
输出
每行一组方案,每组方案中两个数之间用空格分隔。
注意每行最后一个数后没有空格。
i用来表示当前位置,j用来表示当前最小的数,肯定大于前面位置的数,n为整数的总个数。
f(i,j,n)
边界条件j>n 则返回
#include<iostream>
using namespace std;
/*#235. 递归实现指数型枚举
题目描述
? 从 1到n 这 n 个整数中随机选取任意多个,每种方案里的数从小到大排列,按字典序输出所有可能的选择方案。
输入
? 输入一个整数 n。(1≤n≤10)
输出
? 每行一组方案,每组方案中两个数之间用空格分隔。
? 注意每行最后一个数后没有空格。
1.如何按照字典顺序取输出
2.如何有序,从小到大
1,2 是一个问题只要保持有序即可
*/
int arr[10];
void print_one_result(int n){//用于输出每行结果的函数
for(int i=0;i<=n;i++){
if(i)cout<<" ";
cout<<arr[i];
}
cout<<endl;
return ;
}
void fun(int i,int j,int n){
if(j>n)return ;
for(int k=j;k<=n;k++){
arr[i]=k;
print_one_result(i);
fun(i+1,k+1,n);}
}
int main(){
int n;
cin>>n;
fun(0,1,n);
return 0;}
懵懵懂懂懂一点
但是我不明白这么写的目的是啥