ZCMU - 2065: 打印十字图

题目链接:点击打开链接

题目大意:略。

解题思路:

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;
}

猜你喜欢

转载自blog.csdn.net/dream_weave/article/details/81082488