使用 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 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告