简单的图形输出
发布日期:2021-07-01 00:13:16 浏览次数:2 分类:技术文章

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

问题 : 简单的图形输出

时间限制: 1 Sec  
内存限制: 128 MB

题目描述

谢尔宾斯基三角形是一种分形,它的构造过程是这样的:
1.取一个实心的三角形。(多数使用等边三角形)
2.沿三边中点的连线,将它分成四个小三角形。
3.去掉中间的那一个小三角形。
4.对其余三个小三角形重复 1。
我们想尝试用斜线、反斜线和下划线画出谢尔宾斯基三角,假设最小的三角是长这样的:
 /\
/__\
具体规律详见样例。

输入

多组数据输入输出。每行有一个整数 n(1<=n<=10),表示执行了一次操作 1,n=0 时结束输入。

输出

画出执行 n 次操作 1 后的图形,调整你的输出到最左端(底边的第一个斜杠在第一列)。输出不能包含任何尾随空格。在每个测试用例后打印空行。

样例输入

3210

样例输出

/\      /__\     /\  /\    /__\/__\   /\      /\  /__\    /__\ /\  /\  /\  /\/__\/__\/__\/__\   /\  /__\ /\  /\/__\/__\ /\/__\
#include 
#include
char s[2050][2050];void vis(int i, int j, int n){ if(n == 2) { s[i][j] = s[i + 1][j - 1] = '/'; s[i][j + 1] = s[i + 1][j + 2] = '\\'; s[i + 1][j] = s[i + 1][j + 1] = '_'; return ; } vis(i, j, n / 2); vis(i + n / 2, j - n / 2, n / 2); vis(i + n / 2, j + n / 2, n / 2);}int main(){ int n, i, j, m; while (scanf("%d", &n), n) { for (i = 0; i < pow(2, n); i++) { for (j = 0; j < pow(2, n + 1); j++) s[i][j] = ' '; } vis(0, pow(2, n) - 1, pow(2, n)); m = pow(2, n) + 1; for (i = 0; i < pow(2, n); i++, m++) { for(j = 0; j < m; j++) putchar(s[i][j]); printf("\n"); } puts(""); } return 0;}

转载地址:https://lzyws739307453.blog.csdn.net/article/details/80024791 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Little Red Riding Hood
下一篇:来简单地数个数

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月18日 07时10分01秒