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

หาตำแหน่งบุคคลที่ 3 บนรูปหลายเหลี่ยมปกติ N ด้านใน C++


ปัญหา

บนรูปหลายเหลี่ยม 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