菱形图案的打印有没有其他算法或数据结构可以优化?
时间: 2024-10-04 10:01:35 浏览: 12
菱形图案的打印其实可以用更简洁的算法,特别是当涉及递减的宽度和高度时。一种常见的优化是通过只计算每一行的字符数,而不是分别计算空格和星号。这里是一个简化版的菱形打印方法:
```cpp
void printDiamond(int n) {
for (int i = 0; i <= n; i++) {
// 打印空格
for (int space = n - i; space > 0; space--)
cout << " ";
// 打印星号
for (int star = 2 * i + 1; star > 0; star--)
cout << "*";
// 换行
cout << endl;
if (i < n) {
// 递减空格数
for (int space = i; space > 0; space--)
cout << " ";
// 递增星号数
for (int star = 2 * (n - i) - 1; star > 0; star--)
cout << "*";
cout << endl;
}
}
}
```
这个版本减少了对独立变量的使用,并且在打印下半部分时直接从上一行开始调整。
阅读全文