3 条题解

  • 0
    @ 2023-7-13 10:03:08

    这道题用“函数与递归”啦

    #include<bits/stdc++.h>
    using namespace std;
    int r,a[100],n;
    void dfs(int k)
    {
        int i;
        if(k>r)
        {
            for(i=1;i<=r;i++)
                cout<<a[i]<<" " ;
            cout<<endl;
            return ;
        }
        for(i=a[k-1]+1;i<=n;i++)
        {
            a[k]=i;
            dfs(k+1);
        }
    }  
    int main()  
    {   
        cin>>n>>r;
        dfs(1);
        return 0;  
    }
    
    • 0
      @ 2022-11-12 9:15:59

      本质就是全排列加一个升序 在全排列的dfs的for中加上升序的判断就可以了

      #include <bits/stdc++.h>
      using namespace std;
      const int N = 35;
      int ans[N];
      bool vis[N];
      int n,r;
      
      void dfs(int k)
      {
      	if(k>r)
      	{
      		for(int i = 1;i<=r;i++) cout << ans[i] << " ";
      		cout << endl;
      		return ; 
      	}
      	for(int i = ans[k-1]+1;i<=n;i++)
      	{
      		if(vis[i])
      		{
      			ans[k] = i;
      			vis[i] = false;
      			dfs(k+1);
      			vis[i] = true;
      		}
      	}
      }
      
      int main()
      {
      	cin >> n >> r;
      	memset(vis,true,sizeof(vis));
      	dfs(1);
      	return 0;
      }
      
      • 0
        @ 2021-5-24 13:42:58

        C++ :

        #include <iostream>
        #include <cstdio>
        #include <cstring>
        #include <sstream>
        #include <algorithm>
        #define Maxn 1009
        using namespace std;
        int main()
        {
            int a,b;
            scanf("%d %d",&a,&b);
            if(a>b){swap(a,b);}
            for(int i=1;i<=a;i++){
                for(int j=1;j<=b;j++){
                    if(i!=j && i<j){printf("%d %d\n",i,j);}
                }
            }
            return 0;
        }
        
        
        • @ 2023-7-11 12:24:03

          这玩意好像错了吧()应该不是这么写的

      • 1

      信息

      ID
      89
      时间
      1000ms
      内存
      128MiB
      难度
      3
      标签
      递交数
      120
      已通过
      67
      上传者