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 运筹学中在线排序的时间在线排序的在线LPT算法
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧