Andy is Great !!!!! 2019-09-04 16:21 采纳率: 50%
浏览 343
已采纳

请问该算法如何实现?

  1. 一个数组里面有164个元素,其中每6个元素分为一组,则总共可以分为27组单2个。即可以看作共有28组。在任意一组里设置任意一个元素为当前元素,再设置该当前元素前面所有的元素都显示,当前元素后面只能8个元素可显示,其余元素全都隐藏。请问该算法如何实现?请用程序或面向对象编程实现。 假设我们设置第3组的第3个元素为当前元素,则用程序或面向对象编程如何实现?
  • 写回答

3条回答 默认 最新

  • 昆仑道长 2019-09-05 13:17
    关注
    
    template<typename T>
    class CArr
    {
     public:
        CArr(std::vector<T> arr,int nInGroup=6);
        ~CArr();
        bool SetCurrentPos(int iGroup,int iElement); //第iGroup组元素,第iElement个元素
        std::vector<T> GetVisibleElements();
    private:
        std::vector<T> m_arr;
        int m_elementCount; //总共有多少个元素
        int m_nInGroup; //每组多少个元素
        int m_iGroup; //第iGroup组元素
        int m_iElement; //第iElement个元素
    };
    
    template<typename T>
    CArr::CArr(std::vector<T> arr,int nInGroup = 6):m_arr(arr)
                    ,m_elementCount(arr.size())
                    ,m_nInGroup(nInGroup)
                    ,m_iGroup(0)
                    ,m_iElement(0)
    {
    
    }
    
    template<typename T>
    CArr::~CArr()
    {
    }
    
    template<typename T>
    //设置第几组,第几个元素
    bool CArr::SetCurrentPos(int iGroup,int iElement)
    {
        if(iElement >= m_nInGroup){
            return false;
        }
        int totalGroup = m_elementCount/m_nInGroup+(m_elementCount%m_nInGroup==0?0:1);
        if(iGroup >= totalGroup
        {
            return false;
        }
    
        m_iGroup = iGroup;
        m_iElement = iElement;
        return true;
    }
    
    //获取可见元素集合
    template<typename T>
    std::vector<T> CArr::GetVisibleElements()
    {
        int _max_ = (m_iGroup+1)*m_nInGroup+iElement+8>m_elementCount
                        ?m_elementCount:(m_iGroup+1)*m_nInGroup+iElement+8;
        std::vector<T> visible;                 
        for(int i=0; i<_max_; i++)
        {
            visible.push_back(m_arr[i]);
        }
        return visible;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 脱敏项目合作,ner需求合作
  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴