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

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


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