print neatly 整齐打印 算法导论】的更多相关文章

作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4098562.html 题目链接:print neatly 整齐打印 算法导论 考虑在一个打印机上整齐地打印一段文章的问题.输入的正文是$n$个长度分别为$L_1,L_2,\dots ,L_n$(以字符个数度量)的单词构成的序列.我们希望将这个段落在一些行上整齐地打印出来,每行至多$M$个字符.“整齐度”的标准如下:如果某一行包含从i到j的单词$(i<j)$,且单词之间只留一个空格,则在行末…
1. 预备知识 (1) 基本概念     如图,(二叉)堆是一个数组,它可以被看成一个近似的完全二叉树.树中的每一个结点对应数组中的一个元素.除了最底层外,该树是完全充满的,而且从左向右填充.堆的数组A包括两个属性:A.length给出了数组的长度:A.heap-size表示有多少个堆元素保存在该数组中(因为A中可能只有部分位置存放的是堆的有效元素).     由于堆的这种特殊的结构,我们可以很容易根据一个结点的下标i计算出它的父节点.左孩子.右孩子的下标.计算公式如下: parent(i) =…
<算法导论>第三版的BST(二叉查找树)的实现: class Tree: def __init__(self): self.root = None # Definition for a binary tree node class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None self.parent = None class Solution: # @param root, a…
(搬运)<算法导论>习题解答 Chapter 22.1-1(入度和出度) 思路:遍历邻接列表即可; 伪代码: for u 属于 Vertex for v属于 Adj[u] outdegree[u]++; indegree[v]++; 源代码: package C22; import java.util.Iterator; public class C1_1 { static int[] indegree; static int[] outdegree; static Adjacent_List…
转载自:http://blog.csdn.net/speedme/article/details/24231197 1. 什么是动态规划 ------------------------------------------- dynamic programming is a method for solving complex problems by breaking them down into simpler subproblems. (通过把原问题分解为相对简单的子问题的方式求解复杂问题的…
伪代码请见<算法导论>2.3节 merge-sort实现: public class MergeSort {        public static void sort(double [] A,int p, int r)    {           if(p<r)        {            int q = (int) Math.floor( (p+r)/2 );            sort(A,p,q);            sort(A,q+1,r);     …
算法导论,插入排序 public class InsertSort { public static double [] sort(double [] num) { for(int i =1; i<num.length;i++) { double temp = num[i]; int j=i-1; while(j>=0 && temp < num[j]) { num[j+1]=num[j]; j--; } num[j+1] = temp; } return num; } p…
转自:https://blog.csdn.net/qifengzou/article/details/17608863 作者:邹祁峰 邮箱:Qifeng.zou.job@hotmail.com 博客:http://blog.csdn.net/qifengzou 日期:2014.01.18 01:21 转载请注明来自"祁峰"的CSDN博客 1 引言 在<算法导论 之 红黑树 - 插入>中已经对红黑树的5个性质做了较详细的分析,同时也给出了insert操作的C语言实现.首先我们…
算法导论上面快速排序的实现. 代码: def partition(array, left, right): i = left-1 for j in range(left, right): if array[j] <= array[right]: i += 1 array[j], array[i] = array[i], array[j] array[i+1], array[right] = array[right], array[i+1] return i+1 def quicksort(arr…
序 算法导论一书的第四部分-高级设计和分析技术从本章开始讨论,主要分析高效算法的三种重要技术:动态规划.贪心算法以及平摊分析三种. 首先,本章讨论动态规划,它是通过组合子问题的解而解决整个问题的,通常应用于最优化问题. 动态规划算法的设计可以分为如下4个步骤: 描述最优解的结构 递归定义最优解的值 按照自底向上的方式计算最优解的值 由计算出的结果构造一个最优解 15.1 装配线调度 问题描述 第一个动态规划的例子是求解一个制造问题,Colonel汽车公司在有两条装配线的工厂生产汽车,具体如下图所…