天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 18|回复: 1

Combination 组合

[复制链接]
  • TA的每日心情
    开心
    3 天前
  • 签到天数: 49 天

    [LV.5]常住居民I

    185

    主题

    150

    回帖

    1695

    积分

    管理员

    积分
    1695
    发表于 2024-4-26 14:09:32 | 显示全部楼层 |阅读模式
    1. template <typename T>class Combination
    2. {
    3. public:   
    4.         typedef vector<T> Sequence;

    5. public:   
    6.         // 从序列sourceSeq中选取m个元素的组合   
    7.         vector<Sequence> combination(const Sequence &sourceSeq, int m)   
    8.         {   
    9.                 vector<Sequence> totalSeq;
    10.                 if (m <= 0 || m > sourceSeq.size())            
    11.                         return totalSeq;
    12.       
    13.                 Sequence targetSeq;        
    14.                 combination(sourceSeq, m, 0, targetSeq, totalSeq);        
    15.                 return totalSeq;   
    16.         }

    17. private:   
    18.         void combination(const Sequence &sourceSeq, int m, int cur, Sequence &targetSeq, vector<Sequence> &totalSeq)   
    19.         {        
    20.                 if (targetSeq.size() == m)        
    21.                 {            
    22.                         totalSeq.push_back(targetSeq);            
    23.                         return;        
    24.                 }

    25.                 for (int i = cur; i < sourceSeq.size(); i++)        
    26.                 {            
    27.                         // 做出选择            
    28.                         targetSeq.push_back(sourceSeq[i]);            
    29.                         // 递归调用            
    30.                         combination(sourceSeq, m, i + 1, targetSeq, totalSeq);            
    31.                         // 撤销选择            
    32.                         targetSeq.pop_back();        
    33.                 }   
    34.         }
    35. };
    复制代码

     

     

     

     

    Combination 组合
    哎...膜结构车棚,签到来了1...
  • TA的每日心情
    开心
    3 天前
  • 签到天数: 49 天

    [LV.5]常住居民I

    185

    主题

    150

    回帖

    1695

    积分

    管理员

    积分
    1695
     楼主| 发表于 2024-4-26 14:16:27 | 显示全部楼层
    1. class Solution {
    2. public:
    3.         void getsubset(int start, int end,int k, vector<double> &temp, vector<vector<double>> &result,vector<double> &S)
    4.         {
    5.                 if(temp.size() == k)
    6.                 {
    7.                         result.push_back(temp);
    8.                         return;
    9.                 }
    10.                 for(int i = start; i <=end; i++)
    11.                 {
    12.                         temp.push_back(S[i]);
    13.                         getsubset(i+1,end,k,temp,result,S);
    14.                         temp.pop_back();
    15.                 }
    16.         }
    17.         vector<vector<double> > subsets(vector<double> &S) {
    18.                 vector<vector<double>> result;
    19.                 vector<double> temp;
    20.                 int num = (int)S.size();
    21.                 sort(S.begin(), S.end());
    22.                 for(int i = 1; i <= num; i++)
    23.                 {
    24.                         getsubset(0,num-1,i,temp,result,S);
    25.                 }
    26.                 return result;
    27.         }
    28. };
    复制代码

     

     

     

     

    Combination 组合
    哎...膜结构车棚,签到来了1...
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|中国膜结构网_中国空间膜结构协会

    GMT+8, 2024-5-14 00:10 , Processed in 0.058701 second(s), 21 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表