ในรูปหลายเหลี่ยมด้าน N หากเด็กสองคนยืนอยู่บนจุดยอด A และ B เราจำเป็นต้องกำหนดจำนวนจุดยอดที่บุคคลอื่นควรยืน เพื่อให้บุคคลนั้นต้องกระโดดให้ถึง A และ B ทั้งสองจำนวนขั้นต่ำพี>
เงื่อนไขสองประการที่ควรทราบในที่นี้คือ จุดยอดของรูปหลายเหลี่ยมมีหมายเลขตามเข็มนาฬิกา และเราจะเลือกจุดยอดที่มีหมายเลขน้อยที่สุดเสมอในกรณีที่มีคำตอบหลายข้อ
vertexPosition(ด้าน int, vertexA, int vertexB) รับหมายเลข ของด้านต่างๆ ของรูปหลายเหลี่ยมและตำแหน่งของจุดยอด A และ B วง for เริ่มตั้งแต่ 1 และวนซ้ำจนถึง i น้อยกว่าหรือเท่ากับจำนวนด้าน หาก i ไม่เท่ากับ vertexA และ vertexB ความแตกต่างที่แน่นอนระหว่าง i และ vertex A และในทำนองเดียวกันระหว่าง i และ vertexB จะถูกคำนวณและบันทึกเป็น x และ y ตามลำดับ
int vertexPosition(int N, int vertexA, int vertexB){
int tempSum = INT_MAX;
int sum = 0;
int position = 0;
for (int i = 1; i <= N; i++) {
if (i != vertexA && i != vertexB){
int x = abs(i - vertexA);
int y = abs(i - vertexB); ต่อไปเราจะบันทึกผลรวมของ x และ y ลงในตัวแปร sum และตรวจสอบว่าผลรวมน้อยกว่า tempSum หรือไม่ หากน้อยกว่า tempSum ค่าผลรวมปัจจุบันจะถูกกำหนดให้กับ tempSum และค่าดัชนีปัจจุบันจะถูกกำหนดให้กับตัวแปรตำแหน่ง เราตรวจสอบว่าผลรวมใหม่ที่ได้รับนั้นน้อยกว่าผลรวมก่อนหน้าที่เก็บไว้ใน tempSum หรือไม่ในคำสั่ง if เพื่อให้เราส่งคืนตำแหน่งที่ใกล้เคียงที่สุด N อาจมาจาก A และ B หลังจากที่วนซ้ำเสร็จสิ้น การวนซ้ำตำแหน่งจะถูกส่งคืน
sum = x + y;
if (sum < tempSum){
tempSum = sum;
position = i;
}
}
}
return position;
} ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อกำหนดตำแหน่งของบุคคลที่สามบนรูปหลายเหลี่ยมด้าน N ปกติ
#include <iostream>
using namespace std;
int vertexPosition(int N, int vertexA, int vertexB){
int tempSum = INT_MAX;
int sum = 0;
int position = 0;
for (int i = 1; i <= N; i++) {
if (i != vertexA && i != vertexB){
int x = abs(i - vertexA);
int y = abs(i - vertexB);
sum = x + y;
if (sum < tempSum){
tempSum = sum;
position = i;
}
}
}
return position;
}
int main(){
int N = 6, vertexA = 2, vertexB = 4;
cout << "The vertex on which N should stand = " << vertexPosition(N, vertexA, vertexB);
return 0;
} ผลลัพธ์
รหัสข้างต้นจะสร้างผลลัพธ์ต่อไปนี้ -
The vertex on which N should stand = 6