2012年4月23日
摘要: 这道题以二叉搜索树为背景,有点像最优矩阵链乘的问题:设f[i][j] 表示元素i到元素j的最优解,设k为i到j元素所形成二叉树的根,则有f[i][j] = min{f[i][k-1]+f[k+1][j]+sum[i][j]-a[k]},这里sum[i][j]为i到j的查找频率之和,a[k]为root的查找频率,因此我们要求所有元素的前缀和,为什么要加sum[i][j]-a[k];因为我们每加一层,相当于加了sum[i][j]-a[k];代码如下;#include<stdio.h>#include<string.h>#define MAXN 260#define INF 阅读全文
posted @ 2012-04-23 14:29 BFP 阅读(385) 评论(0) 推荐(0) 编辑