首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >九度Online Judge 题目1432:叠筐 解答

九度Online Judge 题目1432:叠筐 解答

作者头像
Enjoy233
发布2019-03-05 13:38:33
6030
发布2019-03-05 13:38:33
举报

九度Online Judge 题目1432:叠筐 解答

提交网址: http://ac.jobdu.com/problem.php?pid=1432

内存限制:128 兆       时间限制:1 秒

题目描述:

把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。

输入:

输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;

输出:

输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。

样例输入:11 B A5 @ W 样例输出:

  AAAAAAAAA ABBBBBBBBBA ABAAAAAAABA ABABBBBBABA ABABAAABABA ABABABABABA ABABAAABABA ABABBBBBABA ABAAAAAAABA ABBBBBBBBBA   AAAAAAAAA

   @@@ @WWW@ @W@W@ @WWW@    @@@

分析:

这是排版题中的一种类型(无明显规律),它所要求的图形不具有显著的规律性或者规律性较难直接应用到输出当中。为了解决此类问题,可以采取一种方法:先完成排版,再进行输出

具体步骤:

1. 使用一个二维数组,从内向外一层层地填充字符(先完成1/4,然后使用竖直方向对称和对角线对称填充其他地方);

2. 去掉4个角(尺寸n=1时不处理).

AC代码:

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int main()
{
    int n,k,i,j;
    char in_char,out_char; 
    while(cin>>n>>in_char>>out_char && ((n>0 && n<80) && n%2!=0) ) // 避免了 短路与 的歧义性
    {
        char s[n+1][n+1];
        memset(s,'0',sizeof s);
          
        char fill_char;
        int flag=0;           // flag用来记录框数的奇偶
        for(k=(n+1)/2;k>=1;--k)
        {
            flag++;
            if(flag%2==1) fill_char=in_char;
            else if(flag%2==0) fill_char=out_char;         
            for(i=k;i<=n+1-k;i++)
            {
                s[k][i]=fill_char;
                s[i][k]=fill_char;                // 与第一句的游标走向关于对角线对称
                s[i][n+1-k]=fill_char;        //  与第一句的游标走向关于竖直方向对称 
                s[n+1-k][i]=fill_char;        //  与第一句的游标走向关于水平方向对称
            }
        }      
            if(n!=1)
            {
                s[1][1]=' ';
                s[n][1]=' ';
                s[1][n]=' ';
                s[n][n]=' ';
            }      
        for(i=1;i<=n;i++)
        {
            for(j=1;j<=n;j++)
            {
                cout<<s[i][j];
            }
            cout<<endl;
        }      
        cout<<endl;
    }  
    return 0;
}

/**************************************************************

    Problem: 1432     Language: C++     Result: Accepted     Time:10 ms     Memory:1520 kb ****************************************************************/

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年04月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档