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

⭕️注意:

相关推荐
Tisfy7 天前
LeetCode 2833.距离原点最远的点:计数
算法·leetcode·字符串·题解·模拟·计数
浅念-7 天前
LeetCode 模拟算法:用「还原过程」搞定编程题的入门钥匙
开发语言·c++·学习·算法·leetcode·职场和发展·模拟
qeen8713 天前
【算法笔记】模拟与高精度加减乘除
c++·笔记·算法·高精度·模拟
Q741_14718 天前
每日一题 力扣 1848. 到目标元素的最小距离 模拟 C++题解
c++·算法·leetcode·模拟
Tisfy20 天前
LeetCode 3740.三个相等元素之间的最小距离 I:今日先暴力,“明日“再哈希
算法·leetcode·哈希算法·题解·模拟·遍历·暴力
Q741_14721 天前
每日一题 3740. 三个相等元素之间的最小距离 I 3741. 三个相等元素之间的最小距离 II 模拟 哈希表 C++ 题解
c++·算法·leetcode·模拟·数组·哈希表
Q741_14721 天前
每日一题 力扣 3655. 区间乘法查询后的异或 II 模拟 分治 乘法差分法 快速幂 C++ 题解
c++·算法·leetcode·模拟·快速幂·分治·差分法
Q741_14723 天前
每日一题 力扣 3653. 区间乘法查询后的异或 I 模拟 数学 位运算 C++ 题解
c++·数学·算法·leetcode·力扣·模拟
Q741_1471 个月前
每日一题 力扣 2751.机器人碰撞 映射 模拟 栈 C++ 题解
算法·leetcode·模拟··映射
A923A1 个月前
【洛谷刷题 | 第七天】
算法·模拟·洛谷