ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีค้นหาตำแหน่งบุคคลที่สามบนรูปหลายเหลี่ยมด้าน N ปกติ
เราได้ให้รูปหลายเหลี่ยมด้าน N ปกติแล้ว และมีคนสองคนในสองจุดที่แตกต่างกันอยู่แล้ว งานของเราคือการหาจุดที่สามเพื่อวางบุคคลที่สามเพื่อให้ระยะห่างระหว่างบุคคลสองคนแรกกับบุคคลที่สามลดลง
มาดูขั้นตอนการแก้ปัญหากัน
-
เริ่มต้น N และจุดสองจุด A และ B
-
เริ่มต้นตำแหน่งของบุคคลที่สามและผลรวมขั้นต่ำเพื่อค้นหาตำแหน่ง
-
วนซ้ำจาก 1 ถึง N.
-
หากตำแหน่งปัจจุบันคือ A หรือ B ให้ข้ามไป
-
หาผลรวมของผลต่างสัมบูรณ์ระหว่างตำแหน่งปัจจุบันกับ A, B.
-
เปรียบเทียบกับยอดขั้นต่ำ
-
หากผลรวมปัจจุบันน้อยกว่าผลรวมขั้นต่ำ ให้อัปเดตตำแหน่งและผลรวมขั้นต่ำ
-
-
พิมพ์ตำแหน่งบุคคลที่สาม
ตัวอย่าง
มาดูโค้ดกันเลย
#include <bits/stdc++.h>
using namespace std;
int findThirdPersonStandingVertex(int N, int A, int B) {
int position = 0;
int minimum_sum = INT_MAX, sum;
for (int i = 1; i <= N; i++) {
// skipping the predefined vertices
if (i == A || i == B) {
continue;
}
else {
// length between the current vertext to A and B
sum = abs(i - A) + abs(i - B);
// checking whether the current sum is less than previous sum
if (sum < minimum_sum) {
// updating the minimum sum and position of vertext
minimum_sum = sum;
position = i;
}
}
}
return position;
}
int main() {
int N = 7, A = 5, B = 7;
cout << "Vertex: " << findThirdPersonStandingVertex(N, A, B) << endl;
return 0;
} ผลลัพธ์
หากคุณรันโปรแกรมข้างต้น คุณจะได้ผลลัพธ์ดังต่อไปนี้
Vertex: 6
บทสรุป
หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น