zoukankan      html  css  js  c++  java
  • HDU 2091 空心三角形(模拟)

    把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为了追求另一种视觉效果。在设计的过程中,需要给出各种花纹的材料和大小尺寸的三角形样板,通过电脑临时做出来,以便看看效果。
     
    Input
    每行包含一个字符和一个整数n(0<n<41),不同的字符表示不同的花纹,整数n表示等腰三角形的高。显然其底边长为2n-1。如果遇到@字符,则表示所做出来的样板三角形已经够了。
     
    Output
    每个样板三角形之间应空上一行,三角形的中间为空。显然行末没有多余的空格。
     
    Sample Input
    X 2 A 7 @
     
    Sample Output
    X XXX   A A A A A A A A A A A AAAAAAAAAAAAA

    搞了半天总是WA,看看discuss里大神们都是PE,为毛我总是WA?不服啊

    后来陆续发现了三个问题

    1、输出之后没有清空字符数组,导致下一次遍历修改图形会被上次的数据影响,比如输入A 6之后再来一组C 5,这样最后会多输出一个C。之前没发现······

    2、最坑爹的,没看见题目中说的“显然行末没有多余的空格”。因此最后的输出阶段循环条件从j<2*n变成j<n+i(即一行输完所需字符后不要再输出后面的空格)

    3、看了discuss才知道这也是个坑,这三角形的空行是介于输入与输出之间的,不是每组数据之间。

    附上代码

    (寒假刚开始自学C++,尽量用C++的东西了)

    #include <iostream>
    #include <cmath>
    #include <cstring>
    using namespace std;
    int main(void)
    {
        int n,i,j,Count=0;
        char ch,ma[120][120];
        while(cin>>ch)
        {    
            if(ch=='@')
            {
                break;
            }    
            Count++;
            cin>>n;    
            if(Count!=1)
                cout<<'
    ';    
            for (i=0; i<n; i++)
            {
                if (i!=n-1)
                    for (j=0; j<2*n; j++)
                    {
                        if ((j==n-i-1)||(j==n+i-1))
                            ma[i][j]=ch;
                        else
                             ma[i][j]=' ';
                    }
                else
                     for (j=0; j<2*n-1; j++)
                     {
                         ma[i][j]=ch;
                     }        
            }
            for (i=0; i<n; i++)
            {
                for (j=0; j<n+i; j++)
                {
                    cout<<ma[i][j];
                }
                cout<<'
    ';
            }        
              memset(ma,' ',sizeof(ma));
        }
        return 0;
    }
  • 相关阅读:
    分享几个个人觉得挺漂亮的导航 Jquery
    C#程序打成 一键安装包InstallShield
    腾讯显IP的API
    C#综合揭秘——细说事务
    2012最新JQuery插件
    Flex各种用法及使用技巧一
    win7管理员账户的启用方法
    禁用win7休眠
    win7下移动文件夹
    win7下转移搜狗文件临时文件夹和IE临时文件夹的方法
  • 原文地址:https://www.cnblogs.com/Blackops/p/5255226.html
Copyright © 2011-2022 走看看