2 条题解

  • 1
    @ 2025-2-11 19:05:41

    蒟蒻の题解

    这道题大部分人第一眼看上去会觉得难,为什么呢?因为他这里的题意太过于《抽象》,我们看数据可能会好懂一些。 其实我们仔细看数据的话,一些学过排列组合的同学就会说了:

    这不就是几个排列组合叠加在一起嘛。

    嗯,是的,这道题你仔细看数据就会发现,那么恭喜你,你已经成功 想出了这道题的基本思路,这道题只需要用dfs去模拟排列组合的过程,然后再多来几次就行啦。


    没错,就是这么“简单”

    #include<bits/stdc++.h>
    using namespace std;
    int n,m;
    int b[20];
    void dfs(int s,int last){
    	if(s>m){
    		for(int i=1;i<=m;i++)
    			cout<<b[i]<<" ";
    		cout<<endl;
    		return;
    	}for(int i=last+1;i<=n;i++){
    			b[s]=i;
    			dfs(s+1,i);
    	}
    }
    int main(){
    	cin>>n;
    	for(m=1;m<=n;m++){
    		dfs(1,0);
    	}
    	return 0;
    }
    

    bye

    信息

    ID
    5
    时间
    1000ms
    内存
    128MiB
    难度
    4
    标签
    递交数
    598
    已通过
    280
    上传者