zoukankan      html  css  js  c++  java
  • 洛谷P1498南蛮图腾(找规律,输出图形题技巧)

     题目链接:https://www.luogu.org/problemnew/show/P1498

    这题还是很有意思的,关键有三点:

    1.观察规律力强,能观察到基础图形宽和高的规律。

    2.要能倒着存储基础图形(到这就完成一半了)。

    3.能根据宽和高不断复制基础图形

    另外要注意并且能发现到:

    这题你只能倒着操作,倒着存倒着输出。

    因为要加宽加高,正着就没法更新操作!

     1 #include<iostream>
     2 using namespace std;
     3 const int maxn=3005;
     4 char a[maxn][maxn];
     5 int main()
     6 {
     7     ios::sync_with_stdio(false); cin.tie(0);
     8     
     9     int n;
    10     cin>>n;
    11     for(int i=0;i<maxn;i++) for(int j=0;j<maxn;j++) a[i][j]=' ';//先全部置为空格,否则空串错误还麻烦要if输出空格
    12    
    13     //1.存基础图形(n=1倒着的)
    14     a[0][0]='/'; a[0][1]='_'; a[0][2]='_'; a[0][3]='\';
    15                  a[1][1]='/'; a[1][2]='\';
    16     
    17     //2.复制右边和上边
    18     int len=4,k=1;//len表示当前图腾的宽,len/2是图腾的高;能观察但到基础的规律:宽和高多么重要!
    19     while(k<n)//不断复制 
    20     {
    21         for(int i=0;i<len/2;i++)
    22         {
    23             
    24             for(int j=0;j<len;j++)
    25             {
    26                 a[i][j+len]=a[i][j];//右边只加宽
    27                 a[i+len/2][j+len/2]=a[i][j];//上边加高加宽
    28             }
    29         }
    30         
    31         len*=2;
    32         k++;
    33     }
    34      
    35     //3.输出
    36     for(int i=(len/2)-1;i>=0;i--)//倒序输出 
    37     {   
    38         for(int j=0;j<len;j++)
    39         {
    40             cout<<a[i][j]; 
    41         }
    42         cout<<endl;
    43     }
    44     
    45     return 0;
    46 }
  • 相关阅读:
    matlab软件-了解
    C# 自定义异常demo
    C#二进制对象copy
    asp.net 缓存依赖demo
    权限管理细粒度问题
    三层架构中的异常处理二
    如何解决复杂问题——结构化思维方式
    入职新公司如何熟悉项目
    专业工具使用与复杂大型项目设计管理
    十分钟学会 tmux
  • 原文地址:https://www.cnblogs.com/redblackk/p/9931835.html
Copyright © 2011-2022 走看看