• 洛谷 P1498 南蛮图腾


    题目描述

    自从到了南蛮之地,孔明不仅把孟获收拾的服服帖帖,而且还发现了不少少数民族的智慧,他发现少数民族的图腾往往有着一种分形的效果,在得到了酋长的传授后,孔明掌握了不少绘图技术,但唯独不会画他们的图腾,于是他找上了你的爷爷的爷爷的爷爷的爷爷……帮忙,作为一个好孙子的孙子的孙子的孙子……你能做到吗?

    输入格式

    每个数据一个数字,表示图腾的大小(此大小非彼大小) n<=10

    输出格式

    这个大小的图腾

    输入输出样例

    输入 #1
    2
    输出 #1
       /
      /__
     /  /
    /__/__
    
    输入 #2
    3
    输出 #2
           /
          /__
         /  /
        /__/__
       /      /
      /__    /__
     /  /  /  /
    /__/__/__/__


    本题的解法还是有规律可循的

    这道题可以用异或的位运算知识来解决、
    异或(^)可以把两个二进制数的每一位,相同的变为0,不同的变为1
    比如:1^0=1,1^1=0,0^0=0
    这样就可以比较简便地把这道题解决了
    首先,用一个a[i][j]数组,来存放是否输出符号,这个数组a[i][j]可以通过:a[i][j]=a[i-1][j]^a[i-1][j-1]来判断是否输出字符,如果说当前(i,j)
    这个点的异或结果为1,就说明它的左上方或右上方有字符,那么这个(i,j)位置就应该输出一次字符,否则,即为它的左上方和右上方均有或均没有字符,输
    出空格
    之后,遇到奇数行的时候,则输出为:/;偶数行则输出:/__,如果这个位置不能输出,则填补上相应的空格占位
    最后,记得在每一行的开头输出空格
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<math.h>
    using namespace std;
    int n;
    int a[1025]={1};
    int main(void)
    {
        scanf("%d",&n);
        
        for(int i=0;i<(1<<n);i++)
        {
            for(int j=1;j<(1<<n)-i;j++) printf(" ");//前置空格
            for(int j=i;j>=0;j--)
            {
                a[j]=a[j]^a[j-1];//进行异或运算
            }
            if(!(i%2))//为奇数行
            {
                for(int j=0;j<=i;j++) 
                {
                    if(a[j]==1) printf("/\");
                    else printf("  ");
                }
            } 
            else//为偶数行
            {
                for(int j=0;j<=i;j+=2)
                {
                    if(a[j]==1) printf("/__\");
                    else printf("    ");
                }
            }
            printf("
    ");
        }
        
        return 0;
    }
    
    
    


  • 相关阅读:
    Web CI/CD Continuous Integration / Continuous Delivery / Continuous Deployment
    hd + TP-Link Switch / wanzhaojiaohuanji / spf+ / TL-ST1008F / TL-ST5016F
    彻底理解js中this的指向,不必硬背(转)
    H5本地存储(转)
    jquery获得 当前页面url的变量
    js中实现base64加密、解密
    项目中easyui-tooltip提示消息运用
    Jquery生成二维码(微信中长按图片识别二维码功能)
    [hdu 3068] Manacher算法O(n)最长回文子串
    Hello world !
  • 原文地址:https://www.cnblogs.com/jd1412/p/12988467.html
Copyright © 2020-2023  润新知