题解 | #圣诞树#
圣诞树
https://www.nowcoder.com/practice/9a03096ed8ab449e9b10b0466de29eb2
#include <iostream> using namespace std; int main() { int n; while (cin >> n) { for (int i = 0; i < 3 * n; ++i) { int k = i / 3; int t = i % 3; for (int j = 0; j < 3 * n - 1 - i; ++j) { cout << " "; } for (int j = 0; j <= t; ++j) { cout << "* "; } for (int j = 0; j < k; ++j) { for (int p = 0; p < 2 - t; p++) { cout << " "; } for (int p = 0; p <= t; p++) { cout << "* "; } } cout << endl; } for (int i = 0; i < n; ++i) { for (int j = 0; j < 3 * n - 1; ++j) { cout << " "; } cout << "*" << endl; } } } // 64 位输出请用 printf("%lld")
就硬写,逐个控制,暴力求解。圣诞树由若干三角形组成,第一层一个三角形,第二层两个三角形中间夹一个空白,第三层三个三角形中间夹两个空白,以此类推,在循环的时候,我们发现下面的规律:
+ 第一层先打印第一个三角形,然后打印0个空白和0个三角形
+ 第二层先打印第一个三角形,然后打印1个空白和1个三角形
+ 第三层先打印第一个三角形,然后打印2个空白和2个三角形
……
于是就有了上面的代码,可以拷贝到VSCode看看
C++题解 文章被收录于专栏
记录在牛客网用C++刷题的题解思路