C++程序 打印 Floyd’s Triangle
Floyd’s Triangle 是一个自然数的三角形数组,并以罗伯特·弗洛伊德(Robert Floyd)命名,他是一位著名的计算机科学家,因Floyd-Warshall算法而闻名。在这里,我们将看到如何使用C++程序打印Floyd’s pattern triangle pyramid,并且下面有示例:
输入: row=5
输出:
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
输入: row=4
输出:
1
2 3
4 5 6
7 8 9 10
算法:
- 首先,将行数作为输入。
- 下一步是实现嵌套循环来打印此模式。
- 一个名为 count 的变量维护要打印的自然数的值。
有3种方法可以打印Floyd’s pattern triangle pyramid:
- 使用for循环。
- 使用while循环。
- 使用递归。
让我们开始逐个讨论这些方法。
1. 使用for循环
下面是使用for循环打印 Floyd’s pattern triangle的C++程序:
// C++ program to print
// Floyd's pattern triangle
// using for loop
#include
using namespace std;
void print_patt(int row)
{
// 初始化计数为1。
int count = 1;
// 外部循环维护行数。
for (int i = 1; i <= row; i++)
{
// 内部循环维护列数。
for (int j = 1; j <= i; j++)
{
// 打印数字
cout << count << " ";
// 逐渐增加数字的计算
count += 1;
}
// 转到下一行。
cout << "\n";
}
}
// 驱动程序
int main()
{
int row = 5;
print_patt(row);
return 0;
}
输出结果
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
- 时间复杂度: O(n2) 因使用了嵌套循环。
- 辅助空间: O(1) 不需要额外的空间,因此空间是常量。
2. 使用while循环
下面是使用while循环打印 Floyd’s pattern triangle 的C++程序。
// C++ program to print
// Floyd's pattern triangle
// using while loop
#include
using namespace std;
void print_patt(int row)
{
// 初始化计数为1。
int count = 1;
// 循环控制变量。
int i = 1, j;
// 外部循环维护行数。
while (i <= row)
{
// 在每次迭代后将j的值重置为1。
j = 1;
// 内部循环维护列数。
while (j <= i)
{
// 打印数字
cout << count << " ";
// 逐渐增加数字的计算
count += 1;
// 增加内部循环的计数
j += 1;
}
// 增加外部循环计数
i += 1;
// 转到下一行。
cout << "\n";
}
}
// 驱动程序
int main()
{
int row = 5;
print_patt(row);
return 0;
}
输出结果
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
- 时间复杂度: 使用嵌套循环,时间复杂度为O(n2)。
- 辅助空间: 不需要额外空间,所以空间为常量,为O(1)。
3. 使用递归
下面是使用递归来打印Floyd三角的C++程序:
// C++程序,打印Floyd三角
//使用递归
#include
using namespace std;
void print_patt(int row, int curr_row,
int count)
{
//如果行数小于等于0,则返回
if (row <= 0)
return;
//循环维护行数
for (int i = 1; i <= curr_row; i++)
{
//打印数字
cout << count << " ";
//增加数字计数器
count += 1;
}
//换行
cout << "\n";
//增加当前行数
curr_row += 1;
//递归调用函数
print_patt(row - 1,
curr_row, count);
}
//主函数
int main()
{
int curr_row = 1;
int count = 1;
int row = 5;
print_patt(row, curr_row, count);
return 0;
}
输出:
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
- 时间复杂度: O(n2)。
- 辅助空间: 使用递归方法,辅助空间为O(n)。