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 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.