C++程序查找x次交换后两个对手学生之间的最大距离


假设我们有四个数字n、x、a和b。一行中有n个学生。其中有两个互相竞争的学生。其中一个在位置a,另一个在位置b。位置从左到右从1到n编号。我们希望最大化这两个学生之间的距离。我们可以执行以下操作x次:选择两个相邻的学生,然后交换他们。我们必须找到交换后可能的最大距离。

因此,如果输入类似于n = 5;x = 1;a = 3;b = 2,则输出将为2,因为我们可以交换位置3和4处的学生,因此这两个学生之间的距离为|4 - 2| = 2。

步骤

为了解决这个问题,我们将遵循以下步骤:

return minimum of (|a - b| + x) and (n - 1)

示例

让我们看看以下实现以获得更好的理解:

#include <bits/stdc++.h>
using namespace std;

int solve(int n, int x, int a, int b) {
   return min(abs(a - b) + x, n - 1);
}
int main() {
   int n = 5;
   int x = 1;
   int a = 3;
   int b = 2;
   cout << solve(n, x, a, b) << endl;
}

输入

5, 1, 3, 2

输出

2

更新于: 2022年3月3日

246 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始
广告