1 solutions

  • 0
    @ 2025-10-26 22:41:36

    嘿,小朋友,咱们来看看这个卡牌游戏的题哈。题目说小明在玩卡牌游戏,他有好多卡牌,每张卡牌都能对敌人造成一定的伤害。敌人有自己的血量,小明要按顺序一张一张出牌,看看用多少张牌能把敌人的血量打到小于等于0,要是把所有牌都用完了敌人还没死,那就输出 -1。

    咱来一步步解决这个问题哈。

    首先呢,咱们得知道有多少张卡牌,还有敌人的血量是多少,这就需要从输入里读取这两个数。

    然后呀,再读取每张卡牌的伤害值。

    接着呢,咱们就一张一张出牌,每出一张牌,就把敌人的血量减去这张牌的伤害值,同时记录用了多少张牌。

    要是敌人的血量小于等于0了,那就说明胜利啦,这时候记录的牌数就是答案。

    要是把所有牌都出完了,敌人血量还是大于0,那就输出 -1。

    下面是解决这个问题的C++代码哦。

    #include<bits/stdc++.h>
    using namespace std;
    int main() {
        // n 是卡牌数目,b 是敌人血量
        long long n, b;
        cin >> n >> b;
        // 存储每张卡牌的伤害值
        vector<long long> cards(n);
        for (int i = 0; i < n; i++) {
            cin >> cards[i];
        }
        // 记录用了多少张卡牌
        int usedCards = 0;
        for (int i = 0; i < n; i++) {
            // 每出一张牌,减少敌人的血量
            b -= cards[i];
            usedCards++;
            // 如果敌人血量小于等于0,就胜利啦
            if (b <= 0) {
                cout << usedCards << endl;
                return 0;
            }
        }
        // 用光所有卡牌还不能胜利,输出 -1
        cout << -1 << endl;
        return 0;
    }
    

    • 1

    Information

    ID
    223
    Time
    1000ms
    Memory
    64MiB
    Difficulty
    9
    Tags
    # Submissions
    10
    Accepted
    8
    Uploaded By