13. 镂空三角形
时间限制:1.000S 空间限制:32MB
题目描述
把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为了追求另一种视觉效果。在设计的过程中,需要给出各种花纹的材料和大小尺寸的三角形样板,通过电脑临时做出来,以便看看效果。
输入描述
每行包含一个字符和一个整数n(0< n <41),不同的字符表示不同的花纹,整数n表示等腰三角形的高。显然其底边长为2n-1。如果遇到@字符,则表示所做出来的样板三角形已经够了。
输出描述
每个样板三角形之间应空上一行,三角形的中间为空。行末没有多余的空格。每条结果后需要再多输出一个空行。
输入示例
X 2 A 7 @
输出示例
X
XXX
A A A
A A
A A
A A
A A
AAAAAAAAAAAAA
解法一(模拟)
思路分析:
- 根据题目要求进行模拟
- 等腰三角形最长边为
2*n-1
实现代码如下:
java
public class k_13_HollowTriangle {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String ch;
while (in.hasNext() && !"@".equals(ch = in.next())) {
// System.out.println(ch);
int n = in.nextInt();
// System.out.println(n);
printTriangle(n, ch);
System.out.println();
}
}
private static void printTriangle(int n, String ch) {
for (int i = 1; i <= n; ++ i) {
// 输出空格
for (int j = i; j < n; ++ j) {
System.out.print(" ");
}
// 计算每行的长度
int len = 2 * i - 1;
// 输出字符
for (int j = 1; j <= len; ++ j) {
if (j == 1 || j == len || i == n) {
// 此时输出边上的字符
System.out.print(ch);
} else {
// 否则输出空格
System.out.print(" ");
}
}
System.out.println();
}
}
}
运行结果如下:
运行时间: 473ms 消耗内存: 14260kb
复杂度分析:
- 时间复杂度:
- 空间复杂度: