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

⭕️注意:

相关推荐
List<String> error_P7 天前
蓝桥杯高频考点练习:模拟问题“球队比分类”
数据结构·python·算法·模拟·球队比分
七夜zippoe7 天前
模拟与存根实战:unittest.mock深度使用指南
linux·服务器·数据库·python·模拟·高级摸您
Tisfy12 天前
LeetCode 3379.转换数组:下标取模
算法·leetcode·题解·模拟·取模
Tisfy15 天前
LeetCode 3713.最长的平衡子串 I:计数(模拟)
算法·leetcode·题解·模拟
CUC-MenG17 天前
Codeforces Round 1078 (Div. 2) A,B,C,D,E,F1个人题解
数学·前缀和·dfs·模拟·dp·线性dp·后缀和·树上dp
Tisfy23 天前
LeetCode 3637.三段式数组 I:一次遍历(三种实现)
算法·leetcode·题解·模拟·数组·遍历·moines
-dzk-1 个月前
【代码随想录】LC 59.螺旋矩阵 II
c++·线性代数·算法·矩阵·模拟
码农幻想梦1 个月前
3476. WERTYU
模拟
码农幻想梦1 个月前
3381. 手机键盘
模拟
码农幻想梦1 个月前
KY110 日期差值
模拟