我是靠谱客的博主 热情吐司,最近开发中收集的这篇文章主要介绍HDU OJ 2091.空心三角形,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Problem Description
把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为了追求另一种视觉效果。在设计的过程中,需要给出各种花纹的材料和大小尺寸的三角形样板,通过电脑临时做出来,以便看看效果。
Input
每行包含一个字符和一个整数n(0<n<41),不同的字符表示不同的花纹,整数n表示等腰三角形的高。显然其底边长为2n-1。如果遇到@字符,则表示所做出来的样板三角形已经够了。
Output
每个样板三角形之间应空上一行,三角形的中间为空。显然行末没有多余的空格。


Sample Input

X 2
A 7
@

Sample Output

 X
XXX
A
A A
A
A
A
A
A
A
A
A
AAAAAAAAAAAAA

本题思路:做题之前我们需要明白三角形的规律。
1.首先是每一行的输出规律。假设三角形的高为n,第i行(i从1开始)最开始左边先输出n-i个空格,然后输出一个三角形字符;中间再输出2*(i-1) - 1个空格,然后输出一个三角形字符。这样可以完成除了第一行和最后一行外的所有输出。
2.整个三角形输出规律。三角形分为第一行,中间行,最后一行共三部分组成。如果行数为2,则没有中间行。因为第一行只有一个三角形字符,最后一行全部是三角形字符,而所有的中间行都包含两个三角形字符,所以才按照这样的规律分为三部分。第一行只要运行1中的一半的操作,中间行输出按照1中的规律操作,最后一行直接输出2*n-1个三角形字符。
3.细节处理。题目要求每个输出的三角形之间需要空一行,但是最后一个三角形后面不要空行,否则会出现“Presentation Error”。其实我们遇到的大多数“Presentation Error”的原因都是末尾多输出了一个空格或者换行......所以大家做题的时候一定要注意不要多输出一个空格或者换行符,否则你会抓狂!!!为什么我的输出都是正确的,但就是不能通过呢!!!
其实,很多OJ平台的检查输出是否正确,都是把你的输出内容放在文件里,然后以字符串的形式去和正确答案做对比,一直读到文件的末尾EOF,这个时候末尾多余的那些看不见的字符就会被读出来,然后发现你的输出和正确答案不同,告诉你做错了 再见


代码如下:

#include <stdio.h>
#include <stdlib.h>
int main() {
char c;
int n, flag = 0;
//flag作为标记,表示当前正在输出第几个空心三角形。如果是第一个,则直接输出三角形,如果不是第一个,则先输出一个换行符,和上面已输出的三角形之间空一行
int leftSpace,midSpace;
//每行最左边的空格个数,每行两个字母中间的空格个数(只有第2行到n-2行有)
int i,j;
while((c = getchar()) != '@') {
scanf("%d", &n);
getchar();
if(flag != 0) {
printf("n");
}
flag++;
if(n == 0) {
continue;
}
leftSpace = n - 1;
midSpace = 1;
if(n > 0) {
//如果三角形行数n大于1,输出第一行
for(i = 0; i < leftSpace; i++) {
printf(" ");
}
printf("%cn", c);
leftSpace--;
}
if(n > 2) {
for(i = 2; i < n; i++) {
//如果三角形行数n大于2(最低3行),输出中间的第2到n-1行
for(j = 0; j < leftSpace; j++) {
printf(" ");
}
printf("%c", c);
for(j = 0; j < midSpace; j++) {
printf(" ");
}
printf("%cn", c);
leftSpace--;
midSpace += 2;
}
}
if(n > 1) {
//如果三角形行数大于1(最低为2行),输出第n行
for(i = 0; i < 2 * n - 1; i++) {
printf("%c", c);
}
printf("n");
}
}
return 0;
}

最后

以上就是热情吐司为你收集整理的HDU OJ 2091.空心三角形的全部内容,希望文章能够帮你解决HDU OJ 2091.空心三角形所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部