递归实现组合型枚举
#include<iostream>
using namespace std;
const int N=500;
int n;
int m;
int state[N];
bool used[N];
void dfs(int u,int c){
//边界条件
if(c==m){//已经选了m个数
for(int i=1;i<=m;i++){
cout<<state[i]<<" ";
}
cout<<endl;
return;
}
if(u>n) return;
state[c+1]=u;//选了u这个数
used[u]=1;
dfs(u+1,c+1);//选下一位
state[c+1]=0;//清理现场
used[u]=0;
//不选这个数
dfs(u+1,c);
}
int main(){
cin>>n;
cin>>m;
dfs(1,0);
return 0;
}
浙公网安备 33010602011771号