欢迎光临
我们一直在努力

3426. 糖果分享游戏

3426.糖果分享游戏

⭐️难度:简单 ⭐️类型:模拟 📖题目:题目链接 在这里插入图片描述

⭐️思路: 以{2,4,6,8}为例,打下表: 在这里插入图片描述

步骤: 1、用一个v2数组存糖果数,避免分享时覆盖原来数据; 2、分享时记得减去一半,然后再加上左边小朋友的一半,也就是+ (v2[index] / 2); 3、每完成一轮分享就检查一次是否相等。

📚题解:

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

⭕️注意: 在这里插入图片描述 在这里插入图片描述

赞(0)
未经允许不得转载:171主机测评 » 3426. 糖果分享游戏
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址