美文网首页
蓝桥杯 历届试题 打印十字图

蓝桥杯 历届试题 打印十字图

作者: 小白之白小明 | 来源:发表于2017-03-17 13:00 被阅读76次

问题描述
小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。
输入格式
一个正整数 n (n<30) 表示要求打印图形的层数。
输出格式
对应包围层数的该标志。
样例输入1
1
样例输出1
..$$$$$..
..$...$..
$$$.$.$$$
$...$...$
$.$$$$$.$
$...$...$
$$$.$.$$$
..$...$..
..$$$$$..
样例输入2
3
样例输出2
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
提示
请仔细观察样例,尤其要注意句点的数量和输出位置。

思路:这个图片是中心对称的,所以可以折合成一个正方形。因为这个正方形又是关于对角线对称的,所以其实只打印一个三角就可以。但是我没有那样做,我打印了一个小正方形。如图所示,把小正方形分成A,B,C三部分,分别找出规律即可。


Markdown
#include<iostream>
using namespace std;
int go(int i,int j,int n)
{
    if(i>n*2+3)
        i=n*4+6-i;        //上下对称
    if(j>n*2+3)
        j=n*4+6-j;     //左右对称,这样就是中心对称了
    if(i<=2&&j<=2)
        return 0;        //打印角上的四个点
    if(i%2==1&&j>=i+2)
        return 1;   //奇数行
    if(j%2==1&&i>=j+2)   
        return 1;     //奇数列
    if(i==j&&i%2==1)
        return 1;        //B区域
    if(i%2==0&&j-i==1)   
        return 1;        //B区域
    if(j%2==0&&i-j==1)  
        return 1;      //B区域
    return 0;
}
int main()
{
    char a[130][130];
    int n;
    cin>>n;
    for(int i=1;i<=4*n+5;i++)
        for(int j=1;j<=4*n+5;j++)
            a[i][j]=0;
    for(int i=1;i<=n*4+5;i++)
    {
        for(int j=1;j<=n*4+5;j++)
        {
            if(go(i,j,n))
                cout<<"$";
            else
                cout<<".";
        }
        cout<<endl;
    }
    for(int i=1;i<=4*n+5;i++)
    {
        for(int j=1;j<=4*n+5;j++)
            cout<<a[i][j];
        cout<<endl;
    }
    system("pause");
    return 0;
}```

相关文章

  • 蓝桥杯 历届试题 打印十字图

    问题描述小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:..$$$$$$$$$$$$$....$....

  • 蓝桥杯_ 历届试题 打印十字图

    思路:这个题目比较简单,一开始没看出来是什么图形,后来突然发现,中间是一个十字架,周围是一个闭合的图形把中间的十字...

  • 蓝桥杯 历届试题 幸运数

    问题描述幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成首先从1开始写出自然数1,2,3,4,5...

  • 蓝桥杯 历届试题 分糖果

    问题描述有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:每个小朋友都把自己的糖果分一...

  • 蓝桥杯练习系统历届试题

    PREV-1 核桃数量思路a,b,c 的最小公倍数利用gcd算法

  • 蓝桥杯 历届试题 回文数字

    问题描述观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数...

  • 蓝桥杯 历届试题 数字游戏

    问题描述栋栋正在和同学们玩一个数字游戏。游戏的规则是这样的:栋栋和同学们一共n个人围坐在一圈。栋栋首先说出数字1。...

  • 蓝桥杯 历届试题 蚂蚁感冒

    问题描述长100厘米的细长直杆子上有n只蚂蚁。它们的头有的朝左,有的朝右。每只蚂蚁都只能沿着杆子向前爬,速度是1厘...

  • 蓝桥杯 历届试题 错误票据

    问题描述某涉密单位下发了某种票据,并要在年终全部收回。每张票据有唯一的ID号。全年所有票据的ID号是连续的,但ID...

  • 蓝桥杯_ 历届试题 翻硬币

    思路:其实这个题目比较简单,如果第一个串可以经过翻转变成第二个串,那这两个串不同字符的个数一定是偶数个,现在就是想...

网友评论

      本文标题:蓝桥杯 历届试题 打印十字图

      本文链接:https://www.haomeiwen.com/subject/bbdenttx.html