使用 C++ 查詢 N 步後的三角形數量


在本文中,首先,我們需要繪製一個彩色的三角形。我們需要取一個無色的三角形,並將三角形分成四個小的等邊三角形。面積相同的三角形,並一直這樣做直到第 n 步,並找到圖形中存在的等邊三角形的數量。

查詢解決方案的方法

此解決方案有兩種方法,它們是 -

暴力方法

我們可以觀察到,三角形的數量在每一步之後都會增加一些數字(以 3*previous_number + 2 的速度增加)。所以我們可以執行一個迴圈直到 n 並計算三角形的數量。

示例

#include <iostream>
using namespace std;
int main() {
   int n = 2; // number of operations we made
   int count = 1; // at first we have only one triangle
   for(int i = 0; i < n; i++) { // looping till n
      count = 3 * count + 2; // as the triangle count is increasing by 3*prev + 2
   }
   cout <<count << "\n";
}

輸出

17

上面程式的時間複雜度為 O(N),其中 N 是執行的運算元。現在我們可以進一步提高其時間複雜度,這在處理更高約束時非常有用。

高效方法

在這種方法中,我們將制定一個公式來為我們計算答案。

示例

#include <bits/stdc++.h>
using namespace std;
int main() {
   int n = 2; // number of operations we made
   int count;
   count = 2 * (pow(3, n)) - 1; // the total number of triangles after nth move
   cout << count << "\n";
}

輸出

17

以上程式碼的時間複雜度為 O(log(N)),其中 N 是我們執行的移動次數。

以上程式碼的解釋

在給定的程式中,我們只是制定了一個公式來解決我們給定的過程,並將公式所需的數值代入,並列印結果。

結論

本文透過應用一些觀察和數學方法來查詢 N 步後的三角形數量。我們還學習了此問題的 C++ 程式以及解決此問題的完整方法(常規和高效)。

我們可以用其他語言(如 C、Java、Python 和其他語言)編寫相同的程式。希望本文對您有所幫助。

更新於:2021-11-25

129 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告
© . All rights reserved.