【练习题】(难度5)跳跳虎

题目详情 - 跳跳虎 - bzoj.org

Description

三只跳跳虎在学校操场上的一条数轴上玩耍,每只跳跳虎都占据一个不同的整数点。在一次移动中,一只跳跳虎跳进另两只跳跳虎之间的空间。两只跳跳虎决不能占据同一位置。 请让它们尽可能久地玩耍。

Format

Input

三个整数 A,B,C表示三只跳跳虎最初的位置。

Output

输出跳跳虎们最多能移动的次数。

#include <bits/stdc++.h>
using namespace std;
int main() {
	int A, B, C;
	int min, mid, max;
	cin >> A >> B >> C; // 输入三只跳跳虎最初的位置
	int positions[] = {A, B, C};
	int size = sizeof(positions) / sizeof(positions[0]);//计算数组中的元素数量
	sort(positions, positions + size); // 从小到大排序
	int moves = 0; // 记录移动次数
	while (1) {
		min = positions[0];
		mid = positions[1];
		max = positions[2];
		// 如果没有足够的空间进行移动,游戏结束
		if (max - min == 2)
			break;
		if (mid - min < max - mid) {
			positions[0] = mid;
			positions[1] = mid + 1;
		} else {
			positions[2] = mid;
			positions[1] = mid - 1;
		}
		moves++; // 增加移动次数
	}
	cout << moves  << endl; // 输出最多能移动的次数
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值