Problem G: 输出回字形
发布日期:2021-05-10 10:41:16 浏览次数:12 分类:精选文章

本文共 2017 字,大约阅读时间需要 6 分钟。

Problem G: 输出回字形

描述:

输出n阶的回字形。定义1、2、3阶的回字形如下:

1阶回字形:@@@ @ @ @@@

2阶回字形:@@@@@@@ @ @ @ @@@ @ @ @ @ @ @ @@@ @ @ @ @@@@@@@

3阶回字形:@@@@@@@@@@@ @ @ @ @@@@@@@ @ @ @ @ @ @ @ @@@ @ @ @ @ @ @ @ @ @ @ @@@ @ @ @ @ @ @ @ @@@@@@@ @ @ @ @@@@@@@@@@@

输入:

输入一个整数n,n取1~9。

输出:

输出对应的图形。

示例输入:

2

示例输出:

@@@@@@@ @ @ @ @@@ @ @ @ @ @ @ @@@ @ @ @ @@@@@@@

HINT:

百度上有人说用for循环写可能要花几个小时,我算是尝试了很多次还是不会,后来学到了坐标法这个神奇的方法,终于明白了生成图形的技巧。

这个是大佬的链接,感谢大佬!

大佬的AC码:

#include #include #include #include #include int main(){    int x,y,n;    scanf("%d",&n);    for(x=-(2*n-1);x<=2*n-1;x++){        for(y=-(2*n-1);y<=2*n-1;y++){            if(x==0 && y==0) putchar(' ');            else if(abs(x)%2!=0 && abs(x)>=abs(y)) putchar('@');            else if(abs(y)%2!=0 && abs(y)>abs(x)) putchar('@');            else putchar(' ');        }         putchar('\n');    }    return 0;}

我理解之后自己也写了代码,以左下角为原点:

#include #include int main(){    int x,y,n;    scanf("%d",&n);    for(x=0;x<3+4*(n-1);x++){        for(y=0; y<3+4*(n-1); y++){            if((x==3+4*(n-1)-1||x==0) && y>=0 || x>0 && (y==0||y==3+4*(n-1)-1))                putchar('@');            else if(y%2==0 && (x>=3+4*(n-1)-1-y && x<=y) || y%2==0 && (x>=y && x<=3+4*(n-1)-1-y) || x%2==0 && y<=x || x%2==0 && y>=x)                putchar('@');            else putchar(' ');        }        putchar('\n');    }    return 0;}

经过调试,优皇用了数组写出简洁的AC码:

#include #include char a[35][35];int main(){    int n, flag = 1;    scanf("%d", &n);    int min = 0, max = 4 * n - 2;    while (min <= max){        if (flag == 1)            for (int x = min; x <= max; x++)                for (int y = min; y <= max; y++)                    a[x][y] = '@';        else            for (int x = min; x <= max; x++)                for (int y = min; y <= max; y++)                    a[x][y] = ' ';        max--;        min++;        flag = -flag;    }    for(int x=0;x<=4*n-2;x++){        for(int y=0; y<=4*n-2;y++)            putchar(a[x][y]);        puts("");    }    return 0;}

优皇用数组写出的精炼AC码,完美解决了问题。

Like 调试完技,分享你的思考过程!记住,让善良的心永远在你❤️

上一篇:【洛谷】P1424 小鱼的航程(改进版)又是题意理解的问题,梅开二度了。。。。。
下一篇:Problem D: 求一元二次方程的根

发表评论

最新留言

表示我来过!
[***.240.166.169]2025年04月07日 13时12分26秒