3 solutions

  • 2
    @ 2024-8-8 13:44:16
    #include<bits/stdc++.h>
    using namespace std;
    const int N=30;
    int ans[N],n,m;
    bool st[N];
    void dfs(int u,int x)
    {
    	if(u==m+1)
    	{
    		for(int i=1;i<=m;i++)
            {
    			cout<<ans[i]<<" ";
            }
    		cout<<endl;
    		return;
    	}
    	for(int i=x;i<=n;i++)
        {
    		if(!st[i])
    		{
    			st[i]=1;
    			ans[u]=i;
    			dfs(u+1,i+1);
    			st[i]=0;
    		}
        }
    }
    int main()
    {
    	cin>>n>>m;
    	dfs(1,1);
    	return 0;
    }
    
    • 1
      @ 2025-7-10 16:15:13
      #include<bits/stdc++.h>
      using namespace std;
      const int N=30;
      int n,m;
      int a[N];
      void dfs()
      {
          for(int i=1;i<=m;i++)
          {
              cout<<a[i]<<" ";
          }
          cout<<endl;
          int cnt=n,q=0;
          for(int i=m;i>=1;i--)
          {
              if(a[i]!=cnt)
              {
                  q=1;
                  break;
              }
              cnt--;
          }
          if(q==0)
          {
              return ;
          }
          int s=0;
          for(int i=m;i>=1;i--)
          {
              if(a[i]!=n-(m-i))
              {
                  a[i]++;
                  s=i;
                  break;
              }
          }
          for(int i=s+1;i<=m;i++)
          {
              a[i]=a[i-1]+1;
          }
          dfs();
      }
      int main()
      {
          cin>>n>>m;
          for(int i=1;i<=m;i++)
          {
              a[i]=i;
          }
          dfs();
          return 0;
      }
      

      我靠这代码在季总那里拿了瓶脉动!!!

      • -3
        @ 2024-7-9 11:29:21
        #include<bits/stdc++.h>
        using namespace std;
        const int N=30;
        int ans[N],n,m;
        bool st[N];
        void dfs(int u,int x)
        {
        	if(u==m+1)
        	{
        		for(int i=1;i<=m;i++)
        			cout<<ans[i]<<" ";
        		cout<<endl;
        		return 																												;
        	}
        	for(int i=x;i<=n;i++)
        		if(!st[i])
        		{
        			st[i]=1;
        			ans[u]=i;
        			dfs(u+1,i+1);
        			st[i]=0;
        		}
        }
        int main()
        {
        	cin>>n>>m;
        	dfs(1,1);
        	return 0;
        }
        
        • 1

        Information

        ID
        232
        Time
        1000ms
        Memory
        256MiB
        Difficulty
        3
        Tags
        # Submissions
        60
        Accepted
        17
        Uploaded By