目錄
輸入輸出場景
使用 If 語句
範例
輸出
使用輔助函數
結論
首頁 後端開發 C++ 連接3個點所需的水平或垂直線段的數量

連接3個點所需的水平或垂直線段的數量

Aug 25, 2023 pm 04:49 PM
垂直 連接 水平

連接3個點所需的水平或垂直線段的數量

假設給定三個不同的點(或座標),你想要找出透過連接這三個點可以形成的水平或垂直線段的數量。這樣的線段也稱為折線。為了解決這個問題,你需要計算幾何的概念。在本文中,我們將討論在C 中解決這個問題的各種方法。

輸入輸出場景

假設c1,c2和c3是笛卡爾平面上3個點的座標。連接這3個點的水平或垂直線段的數量將如下所示。

Input: c1 = (-1, -1), c2 = (-2, 3), c3 = (4, 3)
Output: 1
Input: c1 = (1, -1), c2 = (1, 3), c3 = (4, 3)
Output: 2
Input: c1 = (1, 1), c2 = (2, 6), c3 = (5, 2)
Output: 3
登入後複製

注意 − 水平和垂直線段必須與座標軸對齊。

使用 If 語句

我們可以使用 if 語句來檢查這三個點之間是否存在水平線或垂直線。

  • 建立一個函數,透過將c1.xc2.x、c1.xc3.xc2.x 以及c3.x。如果滿足任意一個條件,則表示存在水平線段,且計數遞增。

  • 同樣,函數透過將c1.yc2.y、c1.yc3.yc2 .y 以及c3.y。如果滿足任一條件,則表示垂直線段確實存在。數再次增加。

範例

#include <iostream>
using namespace std;

struct Coordinate {
   int x;
   int y;
};
int countLineSegments(Coordinate c1, Coordinate c2, Coordinate c3) {
   int count = 0;
   // Check for the horizontal segment
   if (c1.x == c2.x || c1.x == c3.x || c2.x == c3.x)
      count++; 
   // Check for the vertical segment
   if (c1.y == c2.y || c1.y == c3.y || c2.y == c3.y)
      count++; 
   return count;
}

int main() {
   Coordinate c1, c2, c3;
   c1.x = -1; c1.y = -5;
   c2.x = -2; c2.y = 3;
   c3.x = 4; c3.y = 3;

   int numSegments = countLineSegments(c1, c2, c3);

   std::cout << "Number of horizontal or vertical line segments: " << numSegments << std::endl;

   return 0;
}
登入後複製

輸出

Number of horizontal or vertical line segments: 1
登入後複製
登入後複製

注意 如果所有三個點都在笛卡爾平面的同一軸上,即X 軸或Y 軸,則連接它們所需的線段數為1. 若點形成L形,則結果為2,否則結果為3。

使用輔助函數

  • 在這裡,我們可以使用輔助函數 (horizo​​ntalLineverticalLine) 來計算線段。

  • 我們利用這樣一個事實:在笛卡爾系統中,水平線的所有點都位於同一 y 座標上。 horizo​​ntalLine函數透過比較兩個點的 y 座標來檢查它們是否可以形成水平線段。如果 y 座標相同,則存在水平線。

  • 類似地,垂直線的所有點都位於同一 x 座標上。 verticalLine函數透過比較兩個點的x座標來檢查它們是否可以形成垂直線段。如果x座標相同,則存在垂直線。

  • 接下來,我們有countLineSegments 函數,它用於計算水平和垂直線段的數量。如果存在水平或垂直線段,每次迭代後計數會增加。

範例

#include <iostream>
using namespace std;

struct Coordinate {
   int x;
   int y;
};

// Helper functions
bool horizontalLine(Coordinate c1, Coordinate c2)  {
   return c1.y == c2.y;
}

bool verticalLine(Coordinate c1, Coordinate c2)  {
   return c1.x == c2.x;
}

int countLineSegments(Coordinate c1, Coordinate c2, Coordinate c3)  {
   int count = 0;
   // Check for horizontal segment
   if (horizontalLine(c1, c2) || horizontalLine(c1, c3) || horizontalLine(c2, c3))
      count++; 
   // Check for vertical segment
   if (verticalLine(c1, c2) || verticalLine(c1, c3) || verticalLine(c2, c3))
      count++; 
   return count;
}

int main() {
   Coordinate c1, c2, c3;
   c1.x = -1; c1.y = -5;
   c2.x = -2; c2.y = 3;
   c3.x = 4; c3.y = 3;

   int numSegments = countLineSegments(c1, c2, c3);

   std::cout << "Number of horizontal or vertical line segments: " << numSegments << std::endl;

   return 0;
}
登入後複製

輸出

Number of horizontal or vertical line segments: 1
登入後複製
登入後複製

結論

在本文中,我們探索了使用 C 的各種方法來找出可以連接笛卡爾平面中 3 個不同點的水平線和垂直線的數量。我們已經討論了解決該問題的if語句方法。但由於迭代次數較多,時間複雜度也隨之增加。我們可以透過使用輔助函數來有效地解決這個問題,它減少了迭代次數,從而降低了時間複雜度。

以上是連接3個點所需的水平或垂直線段的數量的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Win11遊戲手把連線完整指南 Win11遊戲手把連線完整指南 Jan 02, 2024 pm 05:26 PM

更新了最新的win11系統之後有不少的用戶不清楚該怎麼連接手柄進行遊戲,為此我們今天專給你們帶來了win11連接手柄詳細教程,如果你還沒有完成連接就來看看怎麼操作吧。 win11怎麼連接手把:1、點選下方的開始然後進入windows設定開啟「控制台」。 2.進入之後就可以找到「檢視裝置和印表機」進行進入。 3.此時你能夠看到手把設備的訊息,進行連接就行了。 4.連接成功之後出現一個√,就可以完成連接了。

win7印表機無法連線的錯誤代碼0x0000011b win7印表機無法連線的錯誤代碼0x0000011b Dec 26, 2023 pm 10:01 PM

很多時候我們都需要用電腦來連接印表機進行各種列印的操作,但有時候有些使用者會遇到win7無法連接印表機0x0000011b這種問題狀況,以下就是具體的因應解決方法。 win7無法連接印表機0x0000011b1、快捷鍵“win+r”,輸入“regedit”2、找到以下路徑“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print”3、右鍵新建值“DWORD(32位元)值(D)並且Set\Control\Print”3、右鍵新建值“DWORD(32位元)值(D)並且數值設定為0。將新建專案命名為“RpcAuthnLevelPri

如何在 Windows 11 上檢查網路連線詳細資訊和狀態 如何在 Windows 11 上檢查網路連線詳細資訊和狀態 Sep 11, 2023 pm 02:17 PM

為了確保您的網路連線正常運作或解決問題,有時您需要檢查Windows11上的網路連線詳細資訊。透過這樣做,您可以查看各種信息,包括您的IP位址、MAC位址、連結速度、驅動程式版本等,在本指南中,我們將向您展示如何做到這一點。如何在Windows11上找到網路連線詳細資訊? 1.使用「設定」應用程式按+鍵開啟Windows設定。 WindowsI接下來,導覽至左窗格中的網路和互聯網,然後選擇您的網路類型。在我們的例子中,這就是乙太網路。如果您使用的是無線網絡,請改為選擇Wi-Fi網路。在螢幕底部,您應該會看

keep體脂秤怎麼連接 keep體脂秤怎麼連接 Mar 07, 2024 pm 04:50 PM

keep體脂秤怎麼連接?keep是有專門設計的體脂秤,但是多數的用戶不知道如何連接keep的體脂秤,接下來就是小編為用戶帶來的keep體脂秤連接方法圖文教程,有興趣的用戶快來一起看看吧! keep體脂秤怎麼連接1、先打開keep軟體,進入到主頁點選右下角【我的】選擇其中的【智慧硬體】;2、然後在我的智慧型裝置頁面,中間【新增裝置】按鈕;3 、之後在選擇你要加入的設備介面,選擇【智慧體脂/體重計】;4、接著在選擇設備型號頁面,點選【keep體脂秤】選項;5、最後在下圖所示的介面,最底部的【立即添加】

解決Windows 10網路連線受限的方法 解決Windows 10網路連線受限的方法 Feb 19, 2024 pm 09:20 PM

Win10連接網路受限解決方案隨著科技的快速發展,網路成為了人們生活中不可或缺的一部分。然而,有時我們在使用Windows10作業系統的電腦連接網路時可能會遇到一些問題,其中之一就是連接受限制。在這種情況下,我們無法正常存取網頁、下載檔案或使用網路功能。那麼,有什麼辦法能夠解決這個問題呢?本文將為您介紹幾種常見的解決方案。一、檢查網路連線設定首先,我

印表機錯誤代碼0x0000011b的含義 印表機錯誤代碼0x0000011b的含義 Feb 18, 2024 pm 10:02 PM

連接印表機0x0000011b是什麼意思在使用電腦、筆記型電腦或其他裝置時,使用者常常會遇到各種錯誤代碼。其中,0x0000011b是一種常見的印表機連線錯誤代碼。那麼,連接印表機0x0000011b到底是什麼意思呢?首先,我們需要了解一下印表機連接的基本原理。當我們需要從電腦列印文件時,通常需要將印表機連接到電腦上,以便二者之間進行資料傳輸。這種連接可以透過

一加手錶怎麼連接藍牙耳機_一加手錶連接藍牙耳機的方法 一加手錶怎麼連接藍牙耳機_一加手錶連接藍牙耳機的方法 Mar 23, 2024 pm 01:16 PM

1、將耳機放在耳機盒中並保持蓋子打開,長按盒子上的按鍵使耳機進入進入配對狀態。 2.開啟手錶音樂功能並選擇藍牙耳機,或在手錶設定功能選擇藍牙耳機。 3.在手錶選擇該耳機即可配對成功。

共用印表機無法連接到印表機 共用印表機無法連接到印表機 Feb 22, 2024 pm 01:09 PM

隨著數位時代的發展,共享印表機成為現代辦公環境中不可或缺的一部分。然而,有時我們可能會遇到共用印表機無法連接到印表機的問題,這不僅會影響工作效率,還會帶來一系列麻煩。本文旨在探討共用印表機無法連接到印表機的原因和解決方法。共用印表機無法連接到印表機的原因有很多,其中最常見的原因是網路問題。如果共用印表機與印表機之間的網路連線不穩定或中斷,那麼就無法進行正常

See all articles