ปัญหา
บนรูปหลายเหลี่ยม N ด้าน มีเด็ก 2 คนยืนที่จุด A และ B หาจุดที่บุคคลที่ 3 ควรยืน เพื่อให้ผลรวมระยะทาง (จำนวนขั้น) ไป A และ B น้อยที่สุด ถ้ามีหลายคำตอบ เลือกเลขจุดน้อยที่สุด
อัลกอริธึม
วนลูปทุกจุด i (1 ถึง N) ยกเว้น A และ B คำนวณ |i-A| + |i-B| เลือก i ที่ให้ผลรวมน้อยที่สุด
โปรแกรมตัวอย่าง
#include <iostream>
#include <climits>
#include <cmath>
using namespace std;
int vertexPosition(int N, int A, int B) {
int minSum = INT_MAX, pos = 0;
for (int i = 1; i <= N; i++) {
if (i != A && i != B) {
int sum = abs(i - A) + abs(i - B);
if (sum < minSum) {
minSum = sum;
pos = i;
}
}
}
return pos;
}
int main() {
int N = 6, A = 2, B = 4;
cout << "Vertex for 3rd person: " << vertexPosition(N, A, B);
return 0;
}
ผลลัพธ์
Vertex for 3rd person: 3