Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ เพื่อค้นหาระยะทางสูงสุดระหว่างนักเรียนสองคนหลังจาก x swaps


สมมติว่าเรามีตัวเลขสี่ตัว n, x, a และ b มีนักเรียน n คนอยู่ในแถว มีนักเรียนสองคนที่เป็นคู่แข่งกันในหมู่พวกเขามี ตัวหนึ่งอยู่ที่ตำแหน่ง a และอีกตัวอยู่ที่ตำแหน่ง b ตำแหน่งมีหมายเลขตั้งแต่ 1 ถึง n จากซ้ายไปขวา เราต้องการเพิ่มระยะห่างระหว่างนักเรียนสองคนนี้ให้มากที่สุด เราสามารถดำเนินการต่อไปนี้ได้ x ครั้ง:เลือกนักเรียนสองคนที่อยู่ติดกันแล้วสลับกัน เราต้องหาระยะทางสูงสุดที่เป็นไปได้หลังจาก x swaps

ดังนั้น ถ้าอินพุตเป็นเหมือน n =5; x =1; ก =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