快捷搜索: 王者荣耀 脱发

xtu oj 1397 Patchouli的金字塔

Patchouli的金字塔 [ ] [ ] [ ] Acceteped : 15 Submit : 27 Time Limit : 1000 MS Memory Limit : 65536 KB Description Patchouli的金字塔 Patchouli想要绘制一个金字塔。金字塔的图案由n个正三角形和倒三角形堆叠而成,具体的绘制方法如下: 每个三角形由*,/,和-组成,分别代表三角形的顶点和三条边。 第一行只包含一个正三角形,其余各行的三角形按照”正三角形,倒三角形,正三角形,倒三角形,…… “的顺序紧致排列。 除最后一行外,每一行的三角形比上一行多2个。一共输出n个三角形。 例如,n=1时,图案如下: * / * - * n=2时,图案如下: * / * - * / * - * n=3时,图案如下: * / * - * / / * - * n=7时,图案如下: * / * - * / / * - * - * / / * - * - * Patchouli想知道n个三角形组成的金字塔的图案是怎样的? 输入 第一行包含一个正整数T(1≤T≤100),表示样例的个数。 接下来的T行,每行包含一个正整数n(1≤n≤100),表示金字塔中的三角形的个数。 输出 对于每个样例输出对应的图案。每行的行末不包含多余的空格。 样例输入 4 1 2 3 4 样例输出 * / * - * * / * - * / * - * * / * - * / / * - * * / * - * / / * - * - * #include<stdio.h> int main() { int s; scanf("%d",&s); while(s--) { int n,g,i,j,t,k; scanf("%d",&n); for(g=0,t=n;t>0;g++,t=t-k) { k=2*g+1;//g是层数 } for(t=0;t<2*g;t++) { printf(" "); } printf("* "); for(i=0;i<g;i++) { for(t=0;t<2*(g-i)-1;t++) { printf(" "); } printf("/ \"); for(t=n,j=i-1;j>=0;j--)//求出在该层的第几位t { k=2*j+1; t=t-k; } for(k=1;k<=t-1&&k<=2*i;k++) { if(k%2!=0) { printf(" /"); } else { printf(" \"); } }//分奇偶 printf(" "); for(j=0;j<2*(g-i)-2;j++) { printf(" "); } printf("* - *"); for(k=1;k<=t-1&&k<=2*i;k++)//与上难点相似 { if(k%2!=0) { continue; } else { printf(" - *"); } } printf(" "); } } } 本以为画图形我比较拿手,没想到还是用了接近两小时,有些细节方面的感觉不好快速考虑到,总体来说思维比较简单,适合我这种小菜鸡,不过accpted的那一刻真的非常兴奋,哈哈,自己花时间写出来的感觉就很nice~~
经验分享 程序员 微信小程序 职场和发展