手机页面网站开发例子,做直播导航网站好,深圳短视频seo教程,wordpress admin组合的输出
题目描述
排列与组合是常用的数学方法#xff0c;其中组合就是从 n n n 个元素中抽出 r r r 个元素#xff08;不分顺序且 r ≤ n r \le n r≤n#xff09;#xff0c;我们可以简单地将 n n n 个元素理解为自然数 1 , 2 , … , n 1,2,\dots,n 1,2,…,n其中组合就是从 n n n 个元素中抽出 r r r 个元素不分顺序且 r ≤ n r \le n r≤n我们可以简单地将 n n n 个元素理解为自然数 1 , 2 , … , n 1,2,\dots,n 1,2,…,n从中任取 r r r 个数。
现要求你输出所有组合。
例如 n 5 , r 3 n5,r3 n5,r3所有组合为 123 , 124 , 125 , 134 , 135 , 145 , 234 , 235 , 245 , 345 123,124,125,134,135,145,234,235,245,345 123,124,125,134,135,145,234,235,245,345。
输入格式
一行两个自然数 n , r ( 1 n 21 , 0 ≤ r ≤ n ) n,r(1n21,0 \le r \le n) n,r(1n21,0≤r≤n)。
输出格式
所有的组合每一个组合占一行且其中的元素按由小到大的顺序排列每个元素占三个字符的位置所有的组合也按字典顺序。
注意哦输出时每个数字需要 3 3 3 个场宽。以 C 为例你可以使用下列代码
cout setw(3) x;输出占 3 3 3 个场宽的数 x x x。注意你需要头文件 iomanip。
样例 #1
样例输入 #1
5 3样例输出 #1
1 2 31 2 41 2 51 3 41 3 51 4 52 3 42 3 52 4 53 4 5AC代码
#includemap
#includeset
#includestack
#includecmath
#includequeue
#includestring
#includebitset
#includecstring
#includeiostream
#includealgorithm
#includenumeric
#includeiomanip
#define endl \n
using namespace std;typedef long long ll;
typedef pairint, intPII;
const int N3e510;
const int MOD998244353;
const int INF0X3F3F3F3F;
const int dx[]{-1,1,0,0,-1,-1,1,1};
const int dy[]{0,0,-1,1,-1,1,-1,1};
const int M 1e6 10;int n ,r;
int st[35];
int a[N];
int l;
void dfs(int step)
{if(step r 1){for(int i 1; i r; i ){cout setw(3) a[i];}cout endl;return ;}for(int i a[step - 1] 1; i n; i ){a[step] i;dfs(step 1);}return ;
}
int main()
{cin n r;
// for(int i 1; i r; i )
// {
// memset(a, 0, sizeof a);
// l i;
// dfs(i);
// }dfs(1);return 0;
}