在C++中確定規則N邊多邊形上第三個人的位置?
在一個N邊多邊形中,如果兩個孩子站在A和B頂點上,我們需要確定另一個人應該站立的頂點編號,以便該人到達A和B都需要最少的跳躍次數。
這裡需要注意兩個條件:多邊形的頂點按順時針方向編號,如果有多個答案,我們將始終選擇編號最小的頂點。
`vertexPosition(int sides, int vertexA, int vertexB)` 函式接受多邊形的邊數以及頂點A和B的位置。for迴圈從1開始迭代,直到i小於等於邊數。如果i不等於vertexA和vertexB,則計算i和vertex A之間的絕對差值,以及i和vertex B之間的絕對差值,分別儲存到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變數中,並檢查sum是否小於tempSum。如果小於tempSum,則將當前sum值賦給tempSum,並將當前索引值賦給position變數。我們在if語句中檢查獲得的新和是否小於儲存在tempSum中的先前和,以便返回N與A和B的最近位置。迴圈迭代完成後,返回position。
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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP