第四届“图灵杯”- D题 - 简单的图形输出 - 輸出谢尔宾斯基三角形

本文介绍了如何使用分形迭代方法来生成谢尔宾斯基三角形,通过观察规律发现每个阶数的三角形由3个前一阶三角形组成。采用递归算法实现图形输出,特别注意了二维数组的大小设置和递归边界条件。代码实现中,预计算了一些常量以提高效率,并强调了输出格式的细节,这对于避免WA和PE错误至关重要。
摘要由CSDN通过智能技术生成

題目鏈接

這個題一開始AC的人非常少,可能都是被這個題意嚇怕了。

題面給出了一種分形迭代來生成謝爾賓斯基三角形的操作:

1.取一个实心的三角形。(多数使用等边三角形)
2.沿三边中点的连线,将它分成四个小三角形。
3.去掉中间的那一个小三角形。
4.对其余三个小三角形重复1。

一開始可能會有點懵逼,但是仔細觀察規律,就能發現有自相似性存在。

我們把最簡單的三角形稱作0階三角形。
/\
/__\

我們發現,1階三角形,可以看做是3個0階三角形拼成的。
而2階三角形,則能看做是3個1階三角形拼成的。
以此類推,規律都是成立的。 n 不爲0時, n 階三角形,能看做是3個 n1 階三角形拼成的。

所以可以遞歸地作畫。

先設置一個作畫的“幕布”,即足夠大的二維char數組,叫做map。

我們要確定一下map數組的大小開到什麼程度比較合適。

三角形的階數爲 n ,其各種長度有如下規律:

高度 :

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值