排列:
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e3 +5;
#define swap(a,b){int temp = a ; a = b ; b = temp;}
int data[maxn];
void so(){
for(int i = 0 ; i <= maxn ; i++){
data[i]=i+1;
}
}
void perm(int begin , int end,int &num){
if(begin == end){
for(int i = 0 ; i <= end ; i++){
cout<<data[i]<<" ";
}
num++;
cout<<endl;
}
else
for(int i = begin ; i <=end ; i++){
swap(data[begin],data[i]);
perm(begin + 1 , end,num);
swap(data[begin],data[i]);
}
}
int main(){
so();
int n;
cin>>n;
int num = 0;
perm(0,n-1,num);
cout<<num;
return 0;
}
组合:
#include<bits/stdc++.h>
using namespace std;
const int maxn =1e5 +5;
int data[maxn];
int flag = 1;
int ans[maxn];
int cnt=0;
int n , m ;
int j = 1;
void f(int n,int m,int flag,int &sum){
if(flag == m+1){
for(int i = 0 ; i <= n ; i++){
if(ans[i]!=0){
cout<<ans[i]<<" ";
}
}
sum++;
cout<<endl;
}
else{
for(int i = j; i <= n ; i++){
if(data[i]!=0){
ans[i]=i;
j = i;
data[i]=0;
f(n,m,flag+1,sum);
ans[i]=0;
data[i]=i;
}
}
}
}
void so(){
for(int i = 0 ; i <= n ; i++)
data[i]=i;
}
int main()
{
int sum=0;
cin>>n>>m;
so();
f(n,m,flag,sum);
cout<<sum;
return 0;
}
标签:begin,排列,cout,组合,int,sum,num,data From: https://www.cnblogs.com/ganl/p/16667473.html