排序: 1——n 所有不重复的排列
include <bits/stdc++.h>
using namespace std;
int a[10];
int main()
{
int n,i,j=1,k;
cin>>n;
for(i=1;i<=n;i++)
{
a[i]=i; //a[1~n]=1——n
}
do
{
for(k=1;k<=n;k++) printf("%5d",a[k]);
printf("\n");
}while(next_permutation(a+1,a+n+1));
return 0;
}
组合:n 个元素中抽出 r 个元素
include
include
int x[30];//x[i]代表第i选或不选,0代表选,1代表不选
using namespace std;
int main()
{
int n,r;
scanf("%d%d",&n,&r);//读入n、r
for(int i=r+1;i<=n;++i)
x[i]=1; //赋初始值
do
{
for(int i=1;i<=n;++i)
printf("%3d",x[i]);//如果是0就输出,注意三个常宽
printf("\n");//换行
for(int i=1;i<=n;++i)
if(x[i]==0) printf("%3d",i);//如果是0就输出,注意三个常宽
printf("\n");//换行
}while(next_permutation(x+1,x+n+1));//生成下一个 排序是对 0 0 0 1 1 排序组合
return 0;//返回
}
0 0 0 1 1
1 2 3
0 0 1 0 1
1 2 4
0 0 1 1 0
1 2 5
0 1 0 0 1
1 3 4
0 1 0 1 0
1 3 5
0 1 1 0 0
1 4 5
1 0 0 0 1
2 3 4
1 0 0 1 0
2 3 5
1 0 1 0 0
2 4 5
1 1 0 0 0
3 4 5