3426. 糖果分享游戏

3426.糖果分享游戏

⭐️难度:简单

⭐️类型:模拟

📖题目:题目链接

⭐️思路:

以{2,4,6,8}为例,打下表:

步骤:

1、用一个v2数组存糖果数,避免分享时覆盖原来数据;

2、分享时记得减去一半,然后再加上左边小朋友的一半,也就是+ (v2[index] / 2);

3、每完成一轮分享就检查一次是否相等。

📚题解:

cpp 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<vector>  // vector不需要.h
#include<list>

using namespace std;

bool panduan(vector<int> v) {
    int size = v.size();
    int num = v[0]; // 取一个元素进行判断:是否每一个元素都相等
    for (int i = 0; i < size;i++) {
        if (v[i] != num) {
            return false;
        }
    }
    return true;
}

void share(vector<int>& v) {  // 使用c++的引用
    // 注意:是在原先拥有的糖果数上进行分享,将糖果数先复制一份到v2
    vector<int> v2 = v;

    int size = v.size();
    for (int i = 0;i < size;i++) {
        int index;
        if (i == 0) {
            index = size - 1;
        }
        else {
            index = i - 1;
        }
        v[i] = (v[i] / 2) + (v2[index] / 2);
    }
    for (int i = 0;i < size; i++) {  // 糖果数是奇数的话:再+1
        if (v[i] % 2 == 1) {
            v[i]++;
        }
    }
}

int main() {
   int n = 0;
    while (scanf("%d", &n) != EOF) {
        if (n == 0) {
            break;
        }

        vector<int> v(n);
        for (int i = 0;i < n; i++) {
            scanf("%d",&v[i]);
        }

        int res = 0;
        while(panduan(v) == false) {
            share(v);
            res++;
        }

        printf("%d %d\n", res, v[0]);
    }

    return 0;
}

⭕️注意:

相关推荐
码农幻想梦3 天前
KY24 剩下的树
模拟
ygklwyf3 天前
JPRS编程竞赛2026#1(AtCoder初学者竞赛442)
c++·算法·模拟
码农幻想梦4 天前
KY221 打印日期
开发语言·模拟
码农幻想梦5 天前
KY257 日期累加
模拟
Tisfy6 天前
LeetCode 3507.移除最小数对使数组有序 I:纯模拟
算法·leetcode·题解·模拟·数组
码农幻想梦6 天前
KY18 今年的第几天?
模拟
码农幻想梦6 天前
杭电-叠筐问题
模拟
闻缺陷则喜何志丹7 天前
【模拟】P9670 [ICPC 2022 Jinan R] Frozen Scoreboard|普及+
c++·算法·模拟·洛谷
Tisfy8 天前
LeetCode 3314.构造最小位运算数组 I:今日先简单题简单做-到II再优化
算法·leetcode·题解·模拟·数组