使用 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 和其他语言)编写相同的程序。希望本文对您有所帮助。
广告