题目描述

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的金字塔相关推荐

  1. xtu 1397 Patchouli的金字塔

    题目描述: Patchouli想要绘制一个金字塔.金字塔的图案由n个正三角形和倒三角形堆叠而成,具体的绘制方法如下: 每个三角形由*,/,\和-组成,分别代表三角形的顶点和三条边. 第一行只包含一个正 ...

  2. XTU OJ 1324 Hash

    XTU OJ 1324 Hash Hash 题目描述 H a s h Hash Hash是一种很常用的数据结构,Hash技术的关键在于Hash函数的选取. 一种常用整数的 H a s h Hash H ...

  3. XTU OJ 1375 Fibonacci

    XTU OJ 1375 Fibonacci 题目描述 小明非常喜欢FibonacciFibonacciFibonacci数列,数列为 f1=1,f2=2,fn=fn−1+fn−2f_1=1,f_2=2 ...

  4. XTU OJ 1355 Euler‘s Totient Function(欧拉函数)

    XTU OJ 1355 Euler's Totient Function(欧拉函数) 题目描述 对于整数n,定义ϕ(n)ϕ(n)ϕ(n)为小于或等于n,并与n互质的整数的个数,比如6,比它小的和它互质 ...

  5. xtu oj Patchouli的金字塔

    Patchouli想要绘制一个金字塔.金字塔的图案由n个正三角形和倒三角形堆叠而成,具体的绘制方法如下: 每个三角形由*,/,\和-组成,分别代表三角形的顶点和三条边. 第一行只包含一个正三角形,其余 ...

  6. 质因数分解唯一定理(XTU OJ)

    今年的oj 很有几道题用到了,这里介绍一下 质因数分解(唯一分解定理) 基本概念: 每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,叫做这个合数的分解质因数. 分解质因数只针对合 ...

  7. XTU Oj 128

    Rotate 题目描述 一个4×4的矩阵,我们可以把矩阵看成内外两圈,我们可以把外圈按顺时钟或者逆时钟转动,每次转动90度. 我们想得到一个2×2的子矩阵,使得这个子矩阵4个元素的累加和最大.请问最大 ...

  8. XTU OJ 1359 字符频度

    淦啊,好久不写memset都忘记怎么写了,调了半天QAQ #include<stdio.h> #include<string.h> char a[1005]; int alp[ ...

  9. xtu oj 1375斐波纳契

    题目描述 小明非常喜欢斐波纳契数列,数列为f1=1,f2=2,fn=fn−1+fn−2.小明想知道对于一个整数n,使得n=fi+fj+fk的组合有多少种?比如5=1+1+3或者5=1+2+2,有2种. ...

最新文章

  1. 类和JSON的序列化与反序列化
  2. 聊一聊多源最短路径问题(只有5行代码哦)
  3. 个人工作总结09(第二阶段)
  4. 【CASS精品教程】CASS9.1等高线的绘制完整案例教程
  5. halocn标定找旋转中心_机器人工具坐标系标定原理
  6. 自动驾驶横向运动学分析和非线性问题处理方法
  7. classic example2
  8. java object... args_java中String.format(format,args)中的args是动态的,如何定义format?
  9. HBase配置(伪分布式模式)
  10. linux 上 Mysql 快速链接 去掉DNS解析
  11. php课后答案 唐四薪_PHP课后小结 12.20
  12. 安腾机器IA64 全自动网络安装Linux - elilo+kickstart
  13. 【源码】高精度31波段音频均衡器
  14. IT名企面试:微软笔试题
  15. 恒生电子 java笔试_恒生电子笔试题
  16. linux硬盘的两个分区合并_linux 多分区合并(lvm)实例
  17. 服务器oemSN查询系统,查看服务器sn码命令
  18. jQuery+js+css实现键盘按键呼吸灯效果
  19. PostgreSQL开源界的“活雷锋”
  20. 迪文串口屏的安装方法之卡扣结构带外壳智能屏

热门文章

  1. fiddler拦截请求、篡改响应内容、模拟弱网
  2. 个人收藏系列之360个人图书馆 轻松解除网页防复制难题
  3. layui table 复选框跳页后再回来保持原来选中的状态
  4. uniapp上传图片
  5. Python 高级变量类型 —— 列表、元组、字典、字符串、公共方法
  6. iOS7 edgesForExtendedLayout
  7. Python读写超大文件
  8. 平凡之路上,请不要后会无期
  9. 蓝牙血压计PCBA硬件解决方案
  10. MATLAB虚拟现实