原题链接
题意分析
根据题目可以发现,每一个为n的图腾都可以由3个n-1大小的图腾拼成
所以我们可以根据这一点进行分开计算
建议
1.建议倒着处理,较为方便
2.数组的初始值应为
1 | ' '//空格 |
防止初始值为NULL出错
Code的处理
1.因为图腾最小为1是所以可以进行打表处理
2.根据样例可以判断出每一个图形的宽度wide是成倍增长的
所以将wide设为初始长度 wide=4
3.可以运用dep来保存第几个需要复制的图形
总共只要复制n-1次,因为第一次打表了
4.重点来了
每次复制有两个要点
将左侧复制和将右侧复制
每次复制的深度为 wide/2
每次复制的长(宽)度为 wide
所以可以推出公式
1 | mp[i+wide/2][j+wide/2]=mp[i][j] |
空格是成2倍增加的,所以把之前的图形向右移,之后再复制
5.输出
因为一开始是倒着存储的所以输出时也应该倒着输出
wide的处理必须注意
Code
1 |
|
写法2 递归
推荐题目P5461 赦免战俘
我就不赘述了
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Legendgod's Blog!
评论