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;
}

⭕️注意:

相关推荐
Tisfy2 天前
LeetCode 3637.三段式数组 I:一次遍历(三种实现)
算法·leetcode·题解·模拟·数组·遍历·moines
-dzk-6 天前
【代码随想录】LC 59.螺旋矩阵 II
c++·线性代数·算法·矩阵·模拟
码农幻想梦9 天前
3476. WERTYU
模拟
码农幻想梦9 天前
3381. 手机键盘
模拟
码农幻想梦10 天前
KY110 日期差值
模拟
码农幻想梦12 天前
KY24 剩下的树
模拟
ygklwyf13 天前
JPRS编程竞赛2026#1(AtCoder初学者竞赛442)
c++·算法·模拟
码农幻想梦14 天前
KY221 打印日期
开发语言·模拟
码农幻想梦15 天前
KY257 日期累加
模拟