您的位置:首页 > 其它

杭电 2091 空心三角形

2015-07-24 19:26 309 查看

空心三角形

Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 30553 Accepted Submission(s): 8433



Problem Description
把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为了追求另一种视觉效果。在设计的过程中,需要给出各种花纹的材料和大小尺寸的三角形样板,通过电脑临时做出来,以便看看效果。





Input
每行包含一个字符和一个整数n(0<N<41),不同的字符表示不同的花纹,整数N表示等腰三角形的高。显然其底边长为2N-1。如果遇到@字符,则表示所做出来的样板三角形已经够了。 < div>


Output
每个样板三角形之间应空上一行,三角形的中间为空。显然行末没有多余的空格。


Sample Input
X 2
A 7
@




Sample Output
X
XXX
 
      A
     A A
    A   A
   A     A
  A       A
 A         A
AAAAAAAAAAAAA






先贴ac过的:

解题思路很高端,比较牛的大神。反正我是想不出来。

#include<stdio.h>
int main(){
	int n,line=1;
	char ch;
	while(scanf("%c",&ch)&&ch!='@'){
		scanf("%d",&n);
		if(line==0) printf("\n");
		line=0;
		int i,j;
		for(i=0;i<n;++i){
			for(j=0;j<2*n-1;++j){
				if((j==(2*n-1)/2+i)||(j==(2*n-1)/2-i)||(i==n-1)) 
				printf("%c",ch);
				else if(j<(2*n-1)/2+i) 
				printf(" ");
				}
				printf("\n");
			}
			getchar();
	}
	return 0;
}


这个是我自己的,反正吧是没有过。。。答案什么的都对。。可能是格式上?不知道诶。。。留着以后看吧~~

#include<stdio.h>
int main(){
	int n=0;
	char x;
	int line=1;
	int m;
	while(scanf("%c",&x)&&x!='@'){
		scanf("%d",&n);
		getchar();
		if(line==0) printf("\n");
		line=0;
		m=n;
		int j=1,i=0;
		while(m--){
			if(m==n-1){
				for(i=m;i>0;i--){
					printf(" ");
				}
				printf("%c\n",x);
			}
			if(m>0&&m<n-1){
				for(i=m;i>0;i--){
					printf(" ");
				}
				printf("%c",x);
				for(i=0;i<j;i++){
					printf(" ");
				}
				printf("%c\n",x);
				j=j+2;
			}
			if(m==0){
				for(i=0,j=2*n-1;i<j;i++){
					printf("%c",x);
				}
				printf("\n");
			}
		}
	}
	return 0;
}


后来经学长指正是没有考虑特殊情况1~改了之后就交上了~~感觉萌萌哒~~~

#include<stdio.h>
int main(){
	int n=0;
	char x;
	int line=1;
	int m;
	while(scanf("%c",&x)&&x!='@'){
		scanf("%d",&n);
		getchar();
		if(line==0) printf("\n");
		line=0;
		m=n;
		<span style="color:#ff0000;">if(n==1){
			printf("%c\n",x);
			continue;
		}
</span>		int j=1,i=0;
		while(m--){
			if(m==n-1){
				for(i=m;i>0;i--){
					printf(" ");
				}
				printf("%c\n",x);
			}
			if(m>0&&m<n-1){
				for(i=m;i>0;i--){
					printf(" ");
				}
				printf("%c",x);
				for(i=0;i<j;i++){
					printf(" ");
				}
				printf("%c\n",x);
				j=j+2;
			}
			if(m==0){
				for(i=0,j=2*n-1;i<j;i++){
					printf("%c",x);
				}
				printf("\n");
			}
		}
	}
	return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: