C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++の正多角形上の3人目の位置を決定しますか?


N面のポリゴンで、2人の子供がAとBの頂点に立っている場合、その人がAとBの両方に到達するために必要なジャンプの最小数が存在するように、別の人が立つべき頂点番号を決定する必要があります。

ここで注意すべき2つの条件は、ポリゴンの頂点に時計回りに番号が付けられていることです。複数の回答がある場合は、常に最も小さい番号の頂点を選択します。

verticalPosition(intsides、intvertexA、intvertexB)はnoを取ります。ポリゴンの辺の数と頂点AおよびBの位置。forループは1から始まり、iが辺の数以下になるまで繰り返されます。 iがvertexAとvertexBに等しくない場合、iと頂点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の合計を合計変数に保存し、合計がtempSumよりも小さいかどうかを確認します。 tempSum未満の場合、現在の合計値がtempSumに割り当てられ、現在のインデックス値が位置変数に割り当てられます。得られた新しい合計がtempSumに格納されている以前の合計よりも小さいかどうかをチェックして、最も近い位置NがAとBから返されるようにします。ループが終了すると、位置が返されます。

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

次の実装を見て、正多角形上の3人目の位置を決定しましょう。

#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

  1. C++のMazeIII

    空のスペースと壁のある迷路があり、その迷路の中にボールもあるとします。ボールは、上(u)、下(d)、左(l)、または右(r)の方向に転がることで空きスペースを通過できますが、壁にぶつかるまで転がり続けます。ボールが止まると、次の方向を選ぶことができます。その迷路にも1つの穴があります。ボールが穴に転がると、ボールは穴に落ちます。 したがって、ボールの位置、穴の位置、迷路がある場合、最短距離を移動することでボールがどのように穴に落ちるかを調べる必要があります。ここで、距離は、ボールがスタート(除外)からホール(含まれる)まで移動した空きスペースの数によって定義されます。 「u」、「d」、「l

  2. C++の円上で正反対の人の位置

    この問題では、2つの整数NとMが与えられます。円があり、N人がその上に立っています。 Mは人の位置を示します。私たちの仕事は、Mの反対側の人の位置を印刷することです。 問題を理解するために例を見てみましょう 入力 − n =6、M =3 出力 − 6 説明 − この問題を解決するために、2つのケースがあります。1つはポジションがポジションの半分(後半)より大きい場合、反対は前半、またはその逆です。 このための数式を数学的に作成しましょう。 ケース1 n / 2の場合、相手の位置はm-(n / 2) ケース2 − m =