Kodewick
开始学 →
小挑战←→0 / 60

游戏背包

#046小挑战类和对象map约 7 分钟

小游戏的背包 Bag 用 items 记每样东西有几个。写 use(item):没有这样东西就返回 false;有就少一个,返回 true;少到 0 个时,用 erase 把它从背包里拿掉。

示例
bag_after({"potion", "potion", "key"}, {"potion"})→{'key': 1, 'potion': 1}
bag_after({"key"}, {"key"})→{}
函数map<string, int> bag_after(const vector<string> &picks, const vector<string> &uses)
main.cpp
#include <map>
#include <string>
#include <vector>
using namespace std;

class Bag {
public:
    map<string, int> items;

    void pick(const string &item) {
        items[item]++;
    }

    bool use(const string &item) {
        // 在这里写:用掉一个 item
        return false;
    }
};

map<string, int> bag_after(const vector<string> &picks, const vector<string> &uses) {
    Bag b;
    for (const string &p : picks) {
        b.pick(p);
    }
    for (const string &u : uses) {
        b.use(u);
    }
    return b.items;
}
Ctrl + Enter 也能运行
结果

写好了先点「运行」试试示例,没问题再点「提交」。