二叉苹果数
思路:首先建树,用一个ma数组,储存输入的数据,用三个数组,l[N],r[N],a[N],完成数的建立,l[i]存储i的左子树顶点,r[i]存储右子树顶点,a[i]存储以i为终点的树枝上的苹果数。建树的过程是两个for循环加递归分别建立左子树右子树。
DP函数:
因为要保留q个树枝,即要保留q+1个顶点。所以q++。dp[i][j]代表顶点i保留j个顶点所能得到的最大苹果数。用for循环所有情况。
三个递归出口:
1.当在顶点i保存0个顶点的时候返回0(即砍掉包括i在内的子树)
2.当已经循环到树端点的时.
原创
2020-08-14 15:51:07 ·
153 阅读 ·
0 评论