2018蚌埠NOIP复赛模拟题——第一题(triangle)打印三角形字符串 题解
题目大意:输入n,打印出对应的三角形。
n = 2
/\
/__\
/\ /\
/__\/__\
n = 3
/\
/__\
/\ /\
/__\/__\
/\ /\
/__\ /__\
/\ /\ /\ /\
/__\/__\/__\/__\
n = 4
/\
/__\
/\ /\
/__\/__\
/\ /\
/__\ /__\
/\ /\ /\ /\
/__\/__\/__\/__\
/\ /\
/__\ /__\
/\ /\ /\ /\
/__\/__\ /__\/__\
/\ /\ /\ /\
/__\ /__\ /__\ /__\
/\ /\ /\ /\ /\ /\ /\ /\
/__\/__\/__\/__\/__\/__\/__\/__\
很明显,这道题是有规律的,可以通过上一个数的三角形,推出下一个三角形的形状。下午看到很多童鞋们都模拟到了n为5或6的情况,不过我感觉这道题可以通过递归的方式打印出来(因为三角形太漂亮,而且规律实在过于明显…)由于晚上太忙没时间写,回到宿舍后,感觉这道题还是挺有趣的,准备写一写。不过仔细思考过后,觉得并不需要通过递归来写,直接通过上一次的三角形来拼出下一个三角形即可。
不得不说C++的STL实在太好用,望同学们珍之爱之。这道题如果不用动态数组的话,会很难写,因为数组的规模在翻倍。
下面这个初始化定义是定义了一个长度为2的字符串数组,每个字符串的长度为4。我是为了初始化出一个矩形(可见部分为三角形,不可见部分为空格),这样初始化是因为在接下来拼接的时候,矩形更容易拼接。
vector <string> v(2);
v[