• C++
  • 信奥下午---递归第三次练习

  • @ 2024-6-15 14:10:10

image

2 条评论

  • @ 2024-6-15 15:29:02
    #include<bits/stdc++.h>
    using namespace std;
    int n,m;// 要选几个球
    int s[10000] ,ans[10];
    int a[10]={0};
    void dfs(int k){
    	for(int i = 1;i<=m;i++){
    		if(a[i]==0 && s[i]>ans[k-1]){
    			a[i]=1;
    			ans[k] = s[i];
    			if(k==n){
    				for(int j=1;j<=n;j++)printf("%d ",ans[j]);
    				printf("\n");
    			}else dfs(k+1);
    //			回溯
    			a[i] = 0;
    		}
    
    	}
    	return;
    }
    
    int main(){
    	cin>>m>>n;
    	for(int i=1;i<=m;i++)s[i]=i;
    	dfs(1);
    	return 0;
    }
    
    • 1