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;
}
目录
相关文章
|
3月前
打印出如下图案
打印出如下图案。
29 3
将一个图画到另外一个图的指定位置
将一个图画到另外一个图的指定位置
|
7月前
|
机器学习/深度学习 算法 C++
【算法 | 实验6-1】n*n的网格,从左上角开始到右下角结束遍历所有的方块仅一次,总共有多少种不同的遍历路径
前言 思路介绍中省略了关于如何进行回溯搜索的细节,而主要讨论回溯中所使用的剪枝策略。
157 0
学C的第二十四天【练习:1. 打印菱形;2. 打印自幂数;3. 求Sn=a+aa..n项之和;4. 喝汽水问题;5. 调整数组使奇数位于偶数前面;6. 打印X形图案;7……;8……;9……;10……】-2
5. 调整数组使奇数全部都位于偶数前面 题目: 输入一个整数数组,实现一个函数, 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, 所有偶数位于数组的后半部分。
129 0
L2-023 图着色问题 (25 分)(图的遍历)
L2-023 图着色问题 (25 分)(图的遍历)
68 0
给定三个顶点的坐标使用程序计算三角形
给定三个顶点的坐标使用程序计算三角形
71 0
|
存储
L2-023 图着色问题 (25 分)
L2-023 图着色问题 (25 分)
119 0
L2-023 图着色问题 (25 分)
PTA 7-1 打印三角形拼图 (15 分)
一个正方形可以用两个等边直角三角形拼出来。给定正方形的边长、两个三角形和对角线所用的符号,请你打印出这两个三角形拼出的正方形。
137 0
|
算法
哈密顿路径在图G中找出一条包含所有顶点的简单路径,该路径称为哈密顿路径(1)图G是非完全有向图,且图G不一定存在哈密顿路径; > (2)设计算法判断图G是否存在哈密顿路径,如果存在,输出一天哈密顿路径
哈密顿路径在图G中找出一条包含所有顶点的简单路径,该路径称为哈密顿路径(1)图G是非完全有向图,且图G不一定存在哈密顿路径; > (2)设计算法判断图G是否存在哈密顿路径,如果存在,输出一天哈密顿路径
152 0