看完题后不知所措
P1058 [NOIP2008 普及组] 立体图 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
简单来说,题目要我们按照输入,把立体图画出来,先放张图来震撼一下
看题解,题解的思路如下:
1. 先把一个积木块存入数组里
char Stick[6][7]=
{" +---+"," / /|","+---+ |","| | +","| |/ ","+---+ "
};//单个方块
2. 然后,明确存放顺序
按照从低到高,从后往前,从左到右的顺序来放其它积木块。(为什么是这个顺序?为了覆盖!根据视觉效果,上面的会覆盖下面的,所以先把下面的存入数组,后存入数组的下面的积木就会覆盖之前的字符串,达到视觉效果,同样的,从后往前,从左到右也是这个道理)
3. 计算,位置ij的积木应该放在结果数组的哪里
用了坐权转换
被题解转换坐标的做法帅一脸(看的时候,枯坐两小时,就是没看出来是在干什么,后来才发现是把c里面放着是另一个视角下的,就是下图中分界线上面的那个,下面的那个是从max_x到1进行打印出来的)
这样做原因就是说,因为第一个放置的积木,它的开始坐标会受到最高的积木的高度和数值n的影响,n的影响方便计算,但是高度就不好计算了(毕竟还有其它的积木)。
如果我们以整体图形左下角为 [1][1] 的话,就不会有这个烦恼了。
担心侵权所以就不放代码了。