编程算法 - 水洼的数量 代码(C)】的更多相关文章

水洼的数量 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 有一个大小为N*M的园子, 雨后起了积水. 八连通的积水被觉得是连接在一起的. 请求出园子里总共同拥有多少水洼. 使用深度优先搜索(DFS), 在某一处水洼, 从8个方向查找, 直到找到全部连通的积水. 再次指定下一个水洼, 直到没有水洼为止. 则全部的深度优先搜索的次数, 就是水洼数. 时间复杂度O(8*M*N)=O(M*N). 代码: /* * main.cpp * * Cre…
篱笆修理(Fence Repair) 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 把一块木板切成N块, 每次切两块, 分割的开销是木板长度, 求将木板分割完的最小开销. 即霍夫曼编码(Huffman). 贪心算法, 相似二叉树型结构, 最短板和次短板是兄弟结点, 选取两个最小木板, 最后进行分割, 合并两个最小木板, 依次递推. 代码: /* * main.cpp * * Created on: 2014.7.17 * Author:…
不用加减乘除做加法 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 写一个函数, 求两个整数之和, 要求在函数体内不得使用+, -, *, /四则运算符号. 不能使用运算符号, 使用位运算, 第一步异或运算选位, 第二步与运算进位. 代码: /* * main.cpp * * Created on: 2014.7.13 * Author: Spike */ #include <iostream> #include <list>…
推断二叉树是不平衡树 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入一颗二叉树的根结点, 推断该树是不是平衡二叉树. 二叉平衡树: 随意结点的左右子树的深度相差不超过1. 使用后序遍历的方式, 而且保存左右子树的深度, 进行比較. 代码: /* * main.cpp * * Created on: 2014.6.12 * Author: Spike */ /*eclipse cdt, gcc 4.8.1*/ #include <std…
食物链 并查集 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 有N仅仅动物, 分别编号为1,2,...,N. 全部动物都属于A,B,C中的一种. 已知A吃B, B吃C, C吃A. 按顺序给出两种信息K条. 第一种: x和y属于同一类. 另外一种: x吃y.  信息之间可能会出错和矛盾, 求不对的信息数. 比如: 有N=10仅仅动物, 给定K=7条信息. (1) 1: x=101, y=1; 出错:没有101的动物. (2) 2: x=1,…
最小的k个数 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入n个整数, 找出当中的最小k个数. 使用高速排序(Quick Sort)的方法求解, 把索引值(index)指向前k个数. 代码: /* * main.cpp * * Created on: 2014.6.12 * Author: Spike */ /*eclipse cdt, gcc 4.8.1*/ #include <stdio.h> #include <stdl…
把字符串转换为整数 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 写一个函数StrToInt, 模拟atoi的功能, 把字符串转换为整数. 须要考虑异常处理, 正负数, 还有Int的最大值(0x7FFFFFFF)和最小值(0x80000000)等情况. 代码: /* * main.cpp * * Created on: 2014.7.12 * Author: spike */ #include <stdio.h> #include &l…
背包问题(三种动态规划) 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目參考: http://blog.csdn.net/caroline_wendy/article/details/37912949 能够用动态规划(Dynamic Programming, DP)求解, 能够通过记忆化搜索推导出递推式, 能够使用三种不同的方向进行求解. 动态规划主要是状态转移, 须要理解清晰. 代码: /* * main.cpp * * Created o…
题目: 有一个大小为 N*M 的园子,雨后积起了水.八连通的积水被认为是连接在一起的.请求出园子里总共有多少水洼?(八连通指的是下图中相对 W 的*的部分) *** *W* *** 限制条件:N, M ≤ 100 样例输入: N=10, M=12 园子如下图('W'表示积水, '.'表示没有积水) W........WW. .WWW.....WWW ....WW...WW. .........WW. .........W.. ..W......W.. .W.W.....WW. W.W.W....…
最近认真研究了一下算法导论里面的多项式乘法的快速计算问题,主要是用到了FFT,自己也实现了一下,总结如下. 1.多项式乘法 两个多项式相乘即为多项式乘法,例如:3*x^7+4*x^5+1*x^2+5与8*x^6+7*x^4+6*x^3+9两个式子相乘,会得到一个最高次数项为13的多项式.一般来说,普通的计算方法是:把A多项式中的每一项与B中多项式中的每一项相乘,得到n个多项式,再把每个多项式相加到一起,得到最终的结果,不妨假设A,B的最高次项都为n-1,长度都为n,那么计算最终的结果需要o(n^…