排队领水
排队领水
https://ac.nowcoder.com/acm/problem/22240
题目描述
羊村的供水系统搞砸了,隔壁牛村捐赠的的矿泉水刚刚送达,村长让喜羊羊们排队领水,已知有n个羊村村民正在排队取水,懒羊羊不知道他在队伍的具体哪个位置,但他知道有不少于a个人在他前面,有不多于b个人在他后面,你能帮忙计算一下懒羊羊有多少个可能的位置吗?输入描述:
输入一行包含三个整数n,a,b (0<= a,b < n <= 100)输出描述:
输出一行包含一个整数表示可能的位置数示例1
输入:3 1 1
输出:2示例2
输入:10 1 3
输出:4解题思路:
一个限制条件:懒洋洋前面至少有 a 个人。另一个可移动条件:懒洋洋后面最多有 b 个人。该可移动条件也是一个限制条件,即懒洋洋所在的位置的身后不能超过 b 个人。
如果不考虑第一个限制条件,根据可移动条件可以得到可能的位置为 b+1。(懒洋洋从自身的位置到最后一个位置均可移动)
加上限制条件后,需要结合总人数 n 进行判断,若 n-a <= b,则表明,懒洋洋后面最多只有 n-a-1 个人,加上自身位置,则可能的位置为 n-a。因此,先对 n-a 和 b 进行比较,若前者较小,则结果为 n-a,若后者较小,则结果为 b+1。可以进一步合并为:min(n-a, b+1)。C# 代码:
using System; class Program{ static void Main(){ string input; string[] tokens; while((input = Console.ReadLine()) != null){ tokens = input.Split(); int n = int.Parse(tokens[0]); int a = int.Parse(tokens[1]); int b = int.Parse(tokens[2]); Console.WriteLine(Math.Min(n-a, b+1)); } } }