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
广告