Computer >> Máy Tính >  >> Lập trình >> C ++

Xác định vị trí của kẻ thứ ba trên đa giác đều N cạnh trong C ++?

Trong một đa giác có N cạnh, nếu hai con đứng trên đỉnh A và B thì chúng ta cần xác định số đỉnh mà một người khác sẽ đứng sao cho có số lần nhảy ít nhất mà người đó yêu cầu để đến được A và B.

Hai điều kiện cần lưu ý ở đây là các đỉnh của đa giác được đánh số theo chiều kim đồng hồ và chúng tôi sẽ luôn chọn đỉnh được đánh số ít nhất trong trường hợp có nhiều câu trả lời.

VertexPosition (int bên, int vertexA, int vertexB) nhận giá trị không. các cạnh của đa giác và vị trí của đỉnh A và B. Vòng lặp for bắt đầu từ 1 và lặp lại cho đến khi i nhỏ hơn hoặc bằng số cạnh. Nếu tôi không bằng đỉnhA và đỉnhB thì hiệu số tuyệt đối giữa đỉnh i và đỉnh A và tương tự giữa i và đỉnhB được tính và lưu vào x và y tương ứng.

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);

Tiếp theo, chúng ta lưu tổng của x và y vào biến tổng và kiểm tra xem tổng có nhỏ hơn tempSum hay không. Nếu nó nhỏ hơn tempSum thì giá trị tổng hiện tại được gán cho tempSum và giá trị chỉ mục hiện tại được gán cho biến vị trí. Chúng tôi kiểm tra xem tổng mới thu được có nhỏ hơn tổng trước đó được lưu trữ trong tempSum hay không trong câu lệnh if để chúng tôi trả về vị trí gần nhất N có thể là từ A và B. Sau khi kết thúc vòng lặp, vị trí sẽ được trả về.

         sum = x + y;
         if (sum < tempSum){
            tempSum = sum;
            position = i;
         }
      }
   }
   return position;
}

Ví dụ

Chúng ta hãy xem cách triển khai sau để xác định vị trí của ngôi thứ ba trên đa giác đều N cạnh.

#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;
}

Đầu ra

Đoạn mã trên sẽ tạo ra kết quả sau -

The vertex on which N should stand = 6