XTU OJ 1397 Patchouli的金字塔
題目描述
Patchouli想要繪制一個(gè)金字塔。金字塔的圖案由n個(gè)正三角形和倒三角形堆疊而成,具體的繪制方法如下:
-
每個(gè)三角形由*,/,\和-組成,分別代表三角形的頂點(diǎn)和三條邊。
-
第一行只包含一個(gè)正三角形,其余各行的三角形按照”正三角形,倒三角形,正三角形,倒三角形,…… “的順序緊致排列。
-
除最后一行外,每一行的三角形比上一行多2個(gè)。一共輸出n個(gè)三角形。
例如,n=1時(shí),圖案如下:
*/ \ * - *n=2時(shí),圖案如下:
*/ \* - */ \ * - *n=3時(shí),圖案如下:
*/ \* - */ \ / * - *n=7時(shí),圖案如下:
*/ \* - */ \ / \* - * - */ \ / \ * - * - *Patchouli想知道n個(gè)三角形組成的金字塔的圖案是怎樣的?
輸入
第一行包含一個(gè)正整數(shù)T(1≤T≤100),表示樣例的個(gè)數(shù)。 接下來(lái)的T行,每行包含一個(gè)正整數(shù)n(1≤n≤100),表示金字塔中的三角形的個(gè)數(shù)。
輸出
對(duì)于每個(gè)樣例輸出對(duì)應(yīng)的圖案。每行的行末不包含多余的空格。
樣例輸入
4 1 2 3 4樣例輸出
*/ \ * - **/ \* - */ \ * - **/ \* - */ \ / * - **/ \* - */ \ / \ * - * - *此類題型都是屬于比較耗時(shí)間的題目,需要慢慢修正代碼,我的代碼比較長(zhǎng)和簡(jiǎn)陋,只能提供一些思路
本題我的思路是分奇和偶行輸出,最后一行的三角形要單獨(dú)輸出,(其實(shí)也可以不,只是我太菜了,試了好幾遍也沒(méi)有成功(狗頭),于是就單獨(dú)拿出來(lái)輸出了),
#include<stdio.h> int main() {int k;scanf("%d",&k);while(k--){int n,a=1,i,j,cnt=0,p=0;//計(jì)數(shù)scanf("%d",&n);while(a*a<n)//確定邊長(zhǎng){a++;}for(i=0;i<2*a-1;i++){for(j=0;j<2*a-i;j++)//空格輸出{printf(" ");}if(i%2==1)//偶數(shù)行,有三種輸出,/,\和空格,這該如何輸出???{printf("/");for(j=0;j<2*i;j++){if(j%4==1){printf("\\");cnt++;}else if(j%4==3){printf("/");cnt++;}else printf(" ");}}else//奇數(shù)行{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; //在最后一行需要打印的三角形個(gè)數(shù)if(num%2!=0) //最后一行為奇數(shù)個(gè)三角{for(j=1;j<=(num+1)/2;j++){printf("/ \\");if(j!=(num+1)/2)printf(" ");}}else //最后一行為偶數(shù)個(gè)三角{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");} }歡迎大佬指正!!!
總結(jié)
以上是生活随笔為你收集整理的XTU OJ 1397 Patchouli的金字塔的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Codeforces Round #79
- 下一篇: PyTorch学习笔记(1)nn.Seq