C++程序 打印倒立的空心星形金字塔图案
给定值 R (行数),编写一个C++程序,使用星号和空格打印倒立的空心金字塔。
例子:
输入: R = 5
输出:
*********
* *
* *
* *
*
输入: R = 10
输出:
*******************
* *
* *
* *
* *
* *
* *
* *
* *
*
算法:
- 首先,将行数作为输入。
- 下一步是实现嵌套循环以打印该图案。
- 需要一个维护空格(sp)的变量来保持开始处的空格。
- 通过以下公式计算最后一列: Last Column = (length _of_row * 2 – (2 * Current_row – 1))
- 在第一列和最后一列打印星号( “*” ),然后进入下一行。
下面是实现上述方法的C++程序:
// C++ program to Print a Inverted
// hollow Star Pyramid
#include <bits/stdc++.h>
using namespace std;
void print_patt(int R)
{
// To iterate through the rows
for(int i = 1; i <= R; i++)
{
// To print the beginning spaces
for(int sp = 1;
sp <= i - 1 ; sp++)
{
cout << " ";
}
// Iterating from ith column to
// last column (R*2 - (2*i - 1))
int last_col = (R * 2 - (2 * i - 1));
// To iterate through column
for(int j = 1; j <= last_col; j++)
{
// To Print all star for first
// row (i==1) ith column (j==1)
// and for last column
// (R*2 - (2*i - 1))
if(i == 1)
cout << "*";
else if(j == 1)
cout << "*";
else if(j == last_col)
cout << "*";
else
cout << " ";
}
// After printing a row proceed
// to the next row
cout << "\n";
}
}
// Driver code
int main()
{
// Number of rows
int R = 5;
print_patt(R);
return 0;
}
输出
*********
* *
* *
* *
*
时间复杂度: O(R*last_col),其中R表示行数,last_col表示最后一列。
空间复杂度: O(1),不需要额外的空间,因此它是一个常数。