• 道具叠加情况在背包当中的实现


    只是列举一下伪算法的的函数步骤,留待以后思考。

    需要的函数说明:

    Item* FindItemBySourceID(); //获取同类型的物品并且数量最小

    具体函数操作:

    bool BagManager::Obtain(Item* pItem)
    {
        Item* pTempItem = FindItemBySourceID(pItem->getSourceID()); //获得背包同类物品
         if (pItem)
        { //存在该物品
            
         }
        else
        { //不存在该物品 直接add
    
        }
        return false;
    }

    很直观的容易这么处理,存在该物品只需要修改物品参数就可以了,不存在物品再添加到新的格子里面。但是可能存在的一个格子,叠加之后还有剩余,我们其实可以把else的处理放开,如下图:

    bool BagManager::Obtain(Item* pItem)
    {
        Item* pTempItem = FindItemBySourceID(pItem->getSourceID()); //获得背包同类物品
        if (pItem)
        { //存在该物品
            
        }
        if(pItem->getNums() > 0)
        { //直接add
    
        }    
        return false;
    }

    但是同样还是存在问题,加入pItem一次叠加后剩余的数量,或者本身pItem的数量就远远超过一个格子的最大叠加数,则需要对剩余处理做更多的判断

    bool BagManager::Obtain(Item* pItem)
    {
        Item* pTempItem = FindItemBySourceID(pItem->getSourceID()); //获得背包同类物品
        if (pItem)
        { //存在该物品
            
        }
        if(pItem->getNums()!=0 && pItem->getNums() > pItem->getLimitStackNums())
       { //剩余物品数量仍然大于一个格子的最大叠加数
    
       }
        if(pItem->getNums() > 0)
        { //剩余数量追加
    
        }    
        return false;
    }
  • 相关阅读:
    2017 湖南省赛 K Football Training Camp
    一些相似单词的区别之处
    LeetCode301. Remove Invalid Parentheses
    算法刷题细节点总结
    LeetCode765. Couples Holding Hands
    LeetCode741. Cherry Pickup
    LeetCode312. Burst Balloons
    LeetCode679. 24 Game
    LeetCode862. Shortest Subarray with Sum at Least K
    LeetCode818. Race Car
  • 原文地址:https://www.cnblogs.com/flashbird/p/4427961.html
Copyright © 2020-2023  润新知