C++程序 打印 Floyd’s Triangle

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

  1. 使用for循环。
  2. 使用while循环。
  3. 使用递归。

让我们开始逐个讨论这些方法。

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)。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 示例