ZCMU - 2065: 打印十字图

简介: ZCMU - 2065: 打印十字图

题目链接:点击打开链接


题目大意:略。

解题思路:


image.png


AC 代码

#include<bits/stdc++.h>
#include<cmath>
#define mem(a,b) memset(a,b,sizeof a);
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        int outlen=n*4+1, len=n*2, klen=4*n-1, cnt=-2, jlen=0;
        printf(".."); for(int i=1;i<=outlen;i++) printf("$"); printf("..\n");
        for(int i=0; i<len; i++,cnt++,klen-=2)
        {
            if(cnt>=0 && cnt%2==0) jlen++;
            // pre $.
            for(int j=1;j<=jlen;j++)
            {
                printf("$.");
            }
            if(i%2==1)
            {
                printf("$$$.");
                for(int k=1;k<=klen;k++) printf("$");
                printf(".$$$");
            }
            else
            {
                printf("..$");
                for(int k=1;k<=klen;k++) printf(".");
                printf("$..");
            }
            // next $.
            for(int j=1;j<=jlen;j++)
            {
                printf(".$");
            }
            puts("");
        }
        for(int i=1;i<=n;i++) printf("$.");
        printf("..$..");
        for(int i=1;i<=n;i++) printf(".$");
        puts("");
        for(int i=1;i<=n;i++) printf("$.");
        printf("$$$$$");
        for(int i=1;i<=n;i++) printf(".$");
        puts("");
        for(int i=1;i<=n;i++) printf("$.");
        printf("..$..");
        for(int i=1;i<=n;i++) printf(".$");
        puts("");
        cnt=-2, klen+=2;
        for(int i=len-1; i>=0; i--,cnt++,klen+=2)
        {
            if(cnt>=0 && cnt%2==0) jlen--;
            // pre $.
            for(int j=1;j<=jlen;j++)
            {
                printf("$.");
            }
            if(i%2==1)
            {
                printf("$$$.");
                for(int k=1;k<=klen;k++) printf("$");
                printf(".$$$");
            }
            else
            {
                printf("..$");
                for(int k=1;k<=klen;k++) printf(".");
                printf("$..");
            }
            // next $.
            for(int j=1;j<=jlen;j++)
            {
                printf(".$");
            }
            puts("");
        }
        printf(".."); for(int i=1;i<=outlen;i++) printf("$"); printf("..\n");
    }
    return 0;
}
目录
打赏
0
0
0
0
37
分享
相关文章
将一个图画到另外一个图的指定位置
将一个图画到另外一个图的指定位置
【算法 | 实验6-1】n*n的网格,从左上角开始到右下角结束遍历所有的方块仅一次,总共有多少种不同的遍历路径
前言 思路介绍中省略了关于如何进行回溯搜索的细节,而主要讨论回溯中所使用的剪枝策略。
173 0
三角形判断
三角形判断
92 0
学C的第二十四天【练习:1. 打印菱形;2. 打印自幂数;3. 求Sn=a+aa..n项之和;4. 喝汽水问题;5. 调整数组使奇数位于偶数前面;6. 打印X形图案;7……;8……;9……;10……】-2
5. 调整数组使奇数全部都位于偶数前面 题目: 输入一个整数数组,实现一个函数, 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, 所有偶数位于数组的后半部分。
136 0
L2-023 图着色问题 (25 分)(图的遍历)
L2-023 图着色问题 (25 分)(图的遍历)
81 0
剑指offer_数组---顺时针打印矩阵
剑指offer_数组---顺时针打印矩阵
58 0
每日一题---用‘*‘打印出边长为n的空心六边形
每日一题---用‘*‘打印出边长为n的空心六边形
每日一题---用‘*‘打印出边长为n的空心六边形
PTA 7-1 打印三角形拼图 (15 分)
一个正方形可以用两个等边直角三角形拼出来。给定正方形的边长、两个三角形和对角线所用的符号,请你打印出这两个三角形拼出的正方形。
146 0
16:三角形判断
16:三角形判断
120 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等