递归实现组合型枚举

#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;
}

  

posted on 2023-04-01 11:51  未晞之时  阅读(12)  评论(0)    收藏  举报