• 题目描述
    羊村的供水系统搞砸了,隔壁牛村捐赠的的矿泉水刚刚送达,村长让喜羊羊们排队领水,已知有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));
          }
      }
    }