zoukankan      html  css  js  c++  java
  • 不相交集类

    不相交集的类架构

    class DisjSets
    {
    public:
        explicit DisjSets(int numElement);
        int find (int x) const;
        int find (int x);
        void unionSets1(int root1,int root2);
        void unionSets2(int root1,int root2)
    private:
        vector<int> s;
    
    };
    DisjSets::DisjSets(int numElement):s(numElement)
    {
        for (int i=0;i<s.size();i++)
            s[i]=i;
        //不相交集的初始化例程
    }
    
    void DisjSets::unionSets1(int root1,int root2)
    {
        s[root2]=root1;
    }
    
    int DisjSets::find(int x)const
    {
        if(s[x]<0)
            return x;
        else
            return find(s[x]);
    }
    //按高度求并的程序
    void DisjSets::unionSets2(int root1,int root2)
    {
        if(s[root2]<s[root1])
            s[root1]=root2;
        else
        {
            if(s[root1]==s[root2])
                s[root1]--;
            s[root2] = root1;
        }
    }
    //路径压缩
    int DisjSets::find(int x)
    {
        if(s[x]<0)
            return x;
        else
            return s[x]=find(s[x]);
    }
  • 相关阅读:
    week4
    week3
    2017福州大学面向对象程序设计寒假作业二
    Week2
    10个android开发必备的开源项目
    Day Ten
    Day Nine
    Day Eight
    Day Seven
    Day Six
  • 原文地址:https://www.cnblogs.com/biong-blog/p/4135868.html
Copyright © 2011-2022 走看看