【DP】优美三角剖分

    xiaoxiao2022-07-05  165

    优美三角剖分

    题目

    小X同学为了搞好和小C同学的关系,特意寻找了一些优美的图像作为礼物。 这是一些由无穷无尽三角形组成的极为优美的图形,小X同学很想实现这些极富美感的图形,但是作为一名初赛都未过的伪退役选手,他水平有限,于是这个艰巨的任务就落在你们身上了。 由于好心的出题人,数据范围n<=10。 (具体图形详见样例,每一阶图形都是由3个上一阶图形拼成的) [外链图片转存失败(img-lTHiecvU-1562482901043)(http://10.156.31.134/admin/upload/images/未标题-1 拷贝(1).jpg)]

    输入

    只有一行,输入一个整数为N,表示要求出N阶的图形。

    输出

    输出相应的图形。

    输入样例:T1

    1

    输入样例:T2

    2

    输入样例:T3

    3



    输出样例:T1

    /\ /__\

    输出样例:T2

    /\ /__\ /\ /\ /__\/__\

    输出样例:T3

    /\ /__\ /\ /\ /__\/__\ /\ /\ /__\ /__\ /\ /\ /\ /\ /__\/__\/__\/__\

    解题思路

    把初始的值为一个最小的三角形,分成上下两层,不断的枚举来合成下一个即可.

    注意

    空格也要加上去.

    程序如下

    #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; int k,n; string a[10001]; int main() { k=2; a[1]=" /\\ ";//初始值 a[2]="/__\\"; scanf("%d",&n); for(int i=2;i<=n;++i) { for(int j=1;j<=k;++j) { a[k+j]=a[j]+a[j];//合成下一个三角形 for(int q=1;q<=k;++q) { a[j]=" "+a[j]+" ";//空格 } } k*=2; } for(int i=1;i<=k;++i) { cout<<a[i]<<endl; } return 0; }
    最新回复(0)