XTU OJ 1397 Patchouli的金字塔
生活随笔
收集整理的这篇文章主要介绍了
XTU OJ 1397 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 k;scanf("%d",&k);while(k--){int n,a=1,i,j,cnt=0,p=0;//计数scanf("%d",&n);while(a*a<n)//确定边长{a++;}for(i=0;i<2*a-1;i++){for(j=0;j<2*a-i;j++)//空格输出{printf(" ");}if(i%2==1)//偶数行,有三种输出,/,\和空格,这该如何输出???{printf("/");for(j=0;j<2*i;j++){if(j%4==1){printf("\\");cnt++;}else if(j%4==3){printf("/");cnt++;}else printf(" ");}}else//奇数行{if(i==2*a){for(j=0;j<p;j++){if(j%4==0) printf("*");else if(j%4==2) printf("-");else printf(" ");}continue;}for(j=0;j<2*i+1;j++){if(j%4==0) printf("*");else if(j%4==2) printf("-");else printf(" ");}}printf("\n"); // if(cnt==n) break;}printf(" ");int num;num=n-cnt; //在最后一行需要打印的三角形个数if(num%2!=0) //最后一行为奇数个三角{for(j=1;j<=(num+1)/2;j++){printf("/ \\");if(j!=(num+1)/2)printf(" ");}}else //最后一行为偶数个三角{printf("/ ");for(j=1;j<=num/2;j++){ printf("\\ /");if(j!=num/2) printf(" ");}}printf("\n");for(j=1;j<=(num+1)/2;j++){printf("* -");if(j!=(num+1)/2)printf(" ");}printf(" *");printf("\n");} }欢迎大佬指正!!!
总结
以上是生活随笔为你收集整理的XTU OJ 1397 Patchouli的金字塔的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Codeforces Round #79
- 下一篇: PyTorch学习笔记(1)nn.Seq