ホームページ >バックエンド開発 >C++ >3 点を結ぶのに必要な水平または垂直の線分の数

3 点を結ぶのに必要な水平または垂直の線分の数

WBOY
WBOY転載
2023-08-25 16:49:12856ブラウズ

3 点を結ぶのに必要な水平または垂直の線分の数

3 つの異なる点 (または座標) が与えられたとして、これら 3 つの点を接続することによって形成できる水平または垂直の線分の数を見つけたいとします。このような線分はポリラインとも呼ばれます。この問題を解決するには、計算幾何学の概念が必要です。この記事では、C でこの問題を解決するさまざまな方法について説明します。

入力シナリオと出力シナリオ

c1、c2、c3 がデカルト平面上の 3 点の座標であると仮定します。この3点を結ぶ水平または垂直の線分の数は以下のようになります。

リーリー

Note - 水平線分と垂直線分は座標軸と一致している必要があります。

If ステートメントを使用する

if ステートメントを使用して、これら 3 つの点の間に水平線または垂直線があるかどうかを確認できます。

  • c1.xc2.x、c1.xc3.x、および c2.x## を組み合わせて関数を作成します #および c3.x。いずれかの条件が満たされた場合、水平線分が存在することを意味し、カウントが増加します。

  • 同様に、この関数は

    c1.yc2.y、 c1.yc3.y、および c2 を結合します。 y および c3.y。いずれかの条件が満たされる場合、垂直線分は存在します。またカウントが増えていきます。

  • ###例### リーリー ###出力### リーリー

3 つの点すべてがデカルト平面の同じ軸、つまり X 軸または Y 軸上にある場合、線分の数はそれらを接続するために必要な値は 1 です。点が L 字型を形成している場合、結果は 2 になり、そうでない場合、結果は 3 になります。 補助機能を使用する

ここでは、補助関数 (

horizo​​ntalLine

    verticalLine
  • ) を使用して線分を計算できます。

    デカルト座標系では、水平線のすべての点が同じ y 座標上にあるという事実を利用します。 horizo​​ntalLine

    この関数は、2 つの点の y 座標を比較することによって、2 つの点が水平線分を形成できるかどうかを確認します。 y 座標が同じ場合、水平線が表示されます。
  • 同様に、垂直線のすべての点は同じ x 座標にあります。 verticalLine

    関数は、2 つの点の x 座標を比較することによって、垂直線分を形成できるかどうかをチェックします。 x 座標が同じ場合、垂直線が表示されます。
  • 次に、水平および垂直の線分の数をカウントするために使用される countLineSegments

    関数があります。水平または垂直の線分がある場合、反復のたびにカウントが増加します。
  • ###例### リーリー ###出力### リーリー ###結論は### この記事では、C を使用して、デカルト平面内の 3 つの異なる点を結ぶ水平線と垂直線の数を求めるさまざまな方法を検討します。この問題を解決するための

    if
ステートメントのアプローチについて説明しました。ただし、反復回数が多いため、時間の複雑さも増加します。

補助関数

を使用すると、この問題を効果的に解決できます。これにより、反復回数が減り、時間の複雑さが軽減されます。

以上が3 点を結ぶのに必要な水平または垂直の線分の数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。