题目描述
从 1−n1−n 这 nn 个整数中随机选取任意多个,每种方案里的数从小到大排列,按字典序输出所有可能的选择方案。
输入
输入一个整数 nn。(1≤n≤10)(1≤n≤10)
输出
每行一组方案,每组方案中两个数之间用空格分隔。
注意每行最后一个数后没有空格。
样例输入
3
样例输出
1
1 2
1 2 3
1 3
2
2 3
3
样例输入2
4
样例输出2
1
1 2
1 2 3
1 2 3 4
1 2 4
1 3
1 3 4
1 4
2
2 3
2 3 4
2 4
3
3 4
4
数据规模与约定
时间限制:1 s
内存限制:256 M
100% 的数据保证 1≤n≤101≤n≤10
#include<iostream>
#include<vector>
using namespace std;
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 f(int i,int j,int n)
{
if (j > n)
return;
for (int k = j; k <= n; k++)
{
arr[i] = k;
print_one_result(i);
f(i + 1, k + 1, n);
}
return;
}
int main()
{
//递归的技巧
int n;
cin >> n;
f(0, 1, n);
return 0;
}