洛谷P1498南蛮图腾

当看完这题的题目时,整个人都是蒙的,这题的题目是什么意思,到底要做什么,图形是怎么来的,完全一脸懵逼,然后跑去看题解,看别人怎么理解的题目,看完后明白了,原来是把第n-1个图腾分别向右和向上复制一下,得到的第n个图腾,明白了原理就简单多了

思路:我的思路是暴力破解,用函数循环n-1遍得到第n个图腾(比不用那个杨辉三角取模做出来的大佬),我们观察图腾,不难发现图腾的宽:高=2:1;而第n个图腾与第n-1个图腾的高比例也是2:1,而我们知道第1个图腾的高是2,宽是4,而根据题目可知,n<=10,即第n个图腾的高为2n,宽为2n+1,即该图腾高最高为210,宽最宽为211,接下来就是这么把这些图腾打印出来,首先建立一个数组a[1024][2048],然后将第1个图腾打表在数组中,如果n等于1,那么直接输出图腾,如果n≠1,假设n=3,那么就把第1个图腾分别向右和向上复制,等到第2个图腾,再把第2个图腾分别向右和向上复制,得到第3个图腾并输出他,但是计算机里面不好表示向上复制(因为你不知道你将要输入的n的多少),所以我们将图腾颠倒,输出的时候倒起输出即可
代码如下:

#include
using namespace std;
char a[1024][2048];
int n;
int sum=2;//表示当前图腾的高度
void right()//把图腾向右平移sum个单位复制就行了
{
    for(int i=0;i=0;i--)
    {
        for(int j=0;j>n;
//将第1个图腾打表输入
    a[0][0]=a[1][1]='/';
    a[0][1]=a[0][2]='_';
    a[1][0]=a[1][3]=' ';
    a[0][3]=a[1][2]='\\';
    if(n==1)
    {
        display();
        return 0;
    }
    else
    {
        for(int i=1;i

你可能感兴趣的:(洛谷P1498南蛮图腾)