很多人满分了,可是 Scoreboard 上也有一些 9 分的
今天跟一个同学研究的结论是内存动态开会比较理想
也就是说,若直接用阵列把资料个数开好的话,需要把空间开足够
但是这题的测资很大,而且好像挺接近内存限制的边界,
所以稍微开大一点很容易内存超过限制当掉,不容易抓到刚好的边界
一种方法可以是先扫过一次得到正确的内存数量,再动态的开阵列
(动态内存或是 int a[n]; 之类的, 虽然后者不太正规, 但都可以通过测试)
我个人写递回, 确实可过(Linux 上递回可以超深....), 也挺好写的
另外要注意一下有可能输入的本来就是空指标... 什么也不用印
-
另外HW11还满少人写的...不过虽然这章教了二元搜寻树、链结串行、...etc,
但是HW11不一定要把二元搜寻树建出来XD 虽然我不知道老师出这题是希望看到
怎样的解法...
输入给的级别可能是个提示吧,举例来说
r
____________/
/
s
/ \
/ \
a d
/ \ \
b c e
\
f
则 c、f 的级别分别是 4 和 5 (呃....好像一般比较常叫这个东西'深度'? depth)
此外, s 是从 r 走到 c、以及 r 走到 f 的路中最后一个共通的节点, 级别为 1
可以观察到 c、f 之间的距离是 c 到 s 的距离 + s 到 f 的距离
而 c 到 s 的距离是 c 的级别减去 s 的级别,
f 到 s 的距离是 f 的级别减去 s 的级别.