4 条题解

  • 2
    @ 2023-5-2 19:05:39
    #include <stdio.h>
    int n,m;
    void dfs(int p,int sum,int state)
    {
        if(sum + n - p<m) return; 
        if(sum==m)
        {
            for(int i=0;i<n;i++)
                if(state>>i&1)
                    printf("%d ",i+1);
            printf("\n");
            return;
        }
        if(p==n) return;
        dfs(p+1,sum+1,state|1<<p);
        dfs(p+1,sum,state);
    }
    int main()
    {
        scanf("%d%d",&n,&m);
        dfs(0,0,0);
    }
    
    • 0
      @ 2023-12-10 11:22:37
      #include <bits/stdc++.h>
      using namespace std;
      const int N=1e2+10;
      const int INF=0x3f3f3f3f;
      int n,m,a[N];
      void dfs(int x)
      {
      	if(x==n)
      	{
      		for(int i=1;i<=x;i++)
      		{
      			cout<<a[i];
      		}
      		cout<<endl;
      		return;
      	} 
      	for(int i=a[x]+1;i<=m;i++)
      	{
      		a[x+1]=i;
      		dfs(x+1);
      		a[x+1]=0;
      	}
      }
      int main()
      {
      	cin>>m>>n;
      	dfs(0);
      	return 0;
      }
      
      • 0
        @ 2023-4-1 19:52:23
        #include <queue>
        #include <math.h>
        #include <stack>
        #include <stdio.h>
        #include <iostream>
        #include <vector>
        #include <iomanip>
        #include <string.h>
        #include <algorithm>
        using namespace std;
        #define LL long long
        const int N = 1e5 + 10;
        const int INF = 0x3f3f3f3f;
        int a[N];
        int n ,m;
        void f(int last , int step)
        {
        	if(step == m)
        	{
        		for(int i = 0 ; i < step ; i++)
        			cout << a[i] << " ";
        		cout << endl;
        		return ;
        	}
        	for(int i = last +1 ; i <= n ; i++)
        	{
        		a[step] = i;
        		f(i , step + 1);
        	}
        }
        int main()
        {
        	cin >> n >> m;
        	f(0 , 0);
        	return 0;
        }
        
        • -1
          @ 2024-6-23 11:30:20
          #include<bits/stdc++.h>
          using namespace std;
          int boxes[25],n,m,numbers[105];
          void dfs(int s){
          	if(s > m){
          		for(int i = 1;i <= m;i++){
          			cout << boxes[i] << " ";
          		}
          		cout << endl;
          		return;
          	}
          	for(int i = boxes[s - 1];i <= n;i++){
          		if(not numbers[i]){
          			numbers[i] = 1;
          			boxes[s] = i;
          			dfs(s + 1);
          			numbers[i] = 0;
          		}
          	}
          }
          int main(){
          	cin >> n >> m;
          	boxes[0] = 1;
          	dfs(1);
          
          }
          
          • 1

          信息

          ID
          6
          时间
          1000ms
          内存
          128MiB
          难度
          2
          标签
          递交数
          423
          已通过
          245
          上传者