摘要: 问题描述 给定数组 A[1, 2, ..., n] 和正整数 k, 要求将 A 分割为至多 k 段(即,将 A 至多切 k - 1刀),使得各段的元素之和的最大值最小。 例如,设 A = [1, 2, 3, 4, 5, 6, 7, 8, 9],k = 3。若将 A 分割为1, 2, 3 | 4,5,6 | 7, 8, 9,则各段元素之和分别为 6, 15, 24,最大为24; 若将 A 分割为1, 2, 3 , 4,5 | 6, 7 | 8, 9,则各段元素之和分别为 15, 13, 17,最大为17,因此第二种分割方式要好于第一种(事实上,这也是最优的分割方式)。动态规划解 把上述问题记为 阅读全文
posted @ 2013-06-03 12:50 半亩梨花 阅读(1094) 评论(0) 推荐(0) 编辑
摘要: 假设二叉树的节点为1 template<class T>2 struct BTNode3 {4 T data;5 BTNode * left;6 BTNode * right;7 };1. 先序遍历 1 template<class Func> 2 void PreOrder(BTNode *root, Func visit) 3 { 4 std::stack<BTNode *> s; 5 BTNode *t = root; //t总是指向下一个要访问的节点。 6 while(t) 7 { 8 visi... 阅读全文
posted @ 2013-04-23 00:14 半亩梨花 阅读(226) 评论(0) 推荐(0) 编辑