重拾算法之路-Coursera算法基础
北京大学Coursera公开课--算法基础 习题解题记录,提供解题思路分析。
https://www.coursera.org/learn/suanfa-jichu?specialization=biancheng-suanfa#syllabus
亦游
Github: https://github.com/tp7309
展开
-
POJ 1681 Painter's Problem(画家问题)
总时间限制: 1000ms 内存限制: 65536kB描述有一个正方形的墙,由N*N个正方形的砖组成,其中一些砖是白色的,另外一些砖是黄色的。Bob是个画家,想把全部的砖都涂成黄色。但他的画笔不好使。当他用画笔涂画第(i, j)个位置的砖时, 位置(i-1, j)、 (i+1, j)、 (i, j-1)、 (i, j+1)上的砖都会改变颜色。请你帮助Bob计算出最少需要涂画多少块砖,才能使所有砖的原创 2016-10-26 20:19:55 · 2330 阅读 · 0 评论 -
POJ 2373 Dividing the Path(灌溉草场)
这几日Virtualbox升级到5.0.28后进入Ubuntu14.04安装Guest Additions,结果安装重启后不能进入桌面了,开始还以为密码问题。。 把Virtualbox又换新版本后,通过如下方法解决此问题。 1. 重启Ubuntu 2. 启动时一直按 Shift 键,之后就会出现高级菜单界面: 3. 选择Ubuntu高级选项再选择Recover Mode,之后选择root原创 2016-10-31 22:50:03 · 2158 阅读 · 0 评论 -
POJ 1166 The Clocks(拨钟问题)
描述有9个时钟,排成一个3*3的矩阵。 现在需要用最少的移动,将9个时钟的指针都拨到12点的位置。共允许有9种不同的移动。如下表所示,每个移动会将若干个时钟的指针沿顺时针方向拨动90度。 移动 影响的时钟 1 ABDE 2 ABC 3 BCEF 4 ADG 5 BDE原创 2016-11-03 22:22:34 · 1224 阅读 · 0 评论 -
POJ 2663 Tri Tiling(完美覆盖)
描述一张普通的国际象棋棋盘,它被分成 8 乘 8 (8 行 8 列) 的 64 个方格。设有形状一样的多米诺牌,每张牌恰好覆盖棋盘上相邻的两个方格,即一张多米诺牌是一张 1 行 2 列或者 2 行 1 列的牌。那么,是否能够把 32 张多米诺牌摆放到棋盘上,使得任何两张多米诺牌均不重叠,每张多米诺牌覆盖两个方格,并且棋盘上所有的方格都被覆盖住?我们把这样一种排列称为棋盘被多米诺牌完美覆盖。这是一个简原创 2016-11-12 19:37:15 · 4579 阅读 · 0 评论 -
POJ 1057 FILE MAPPING(文件结构图)
描述在计算机上看到文件系统的结构通常很有用。Microsoft Windows上面的”explorer”程序就是这样的一个例子。但是在有图形界面之前,没有图形化的表示方法的,那时候最好的方式是把目录和文件的结构显示成一个”图”的样子,而且使用缩排的形式来表示目录的结构。比如:ROOT| dir1| | file1| |原创 2016-11-13 01:09:54 · 891 阅读 · 0 评论 -
动态规划概念讲解
定义动态规划与分治算法类似,都是通过组合子问题的解来求解原问题。分治算法将问题划分为互不相关的子问题,递归地求解子问题,再将它们的解组合起来,求出原问题的解。与之相反,动态规划应用于子问题重叠的情况,即不同的子问题具有公共的子子问题(子问题的求解是递归进行的,将其划分成更小的子子问题),动态规划算法会将每个子问题的解保存,避免一些不必要的计算工作。 动态规划通过用来求解最优化问题。 定义取自<转载 2016-11-13 21:13:18 · 636 阅读 · 0 评论 -
OJ 1794 集合加法
描述给出2个正整数集合A = {pi | 1 <= i <= a},B = {qj | 1 <= j <= b}和一个正整数s。问题是:使得pi + qj = s的不同的(i, j)对有多少个。输入第1行是测试数据的组数n,后面跟着n组测试数据。每组测试数据占5行,第1行是和s (1 <= s <= 10000),第2行是一个正整数a (1 <= a <= 10000),表示A中元素的数目。第3行是原创 2016-11-14 08:52:03 · 568 阅读 · 0 评论 -
OJ 1088 滑雪__动态规划
描述Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子: 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8原创 2016-11-16 00:34:04 · 801 阅读 · 0 评论 -
POJ 1221 UNIMODAL PALINDROMIC DECOMPOSITIONS__动态规划
DescriptionA sequence of positive integers is Palindromic if it reads the same forward and backward. For example: 23 11 15 1 37 37 1 15 11 23 1 1 2 3 4 7 7 10 7 7 4 3 2 1 1A Palindromic ...原创 2016-11-19 21:53:45 · 728 阅读 · 0 评论 -
POJ 1458 Common Subsequence(最长公共子序列)__动态规划
描述我们称序列 Z = < z1, z2, …, zk >是序列X = < x1, x2, …, xm >的子序列当且仅当存在严格上 升的序列< i1, i2, …, ik >,使得对j = 1, 2, … ,k, 有xij = zj。比如Z = < a, b, f, c > 是X = < a, b, c, f, b, c >的子序列。 现在给出两个序列X 和Y,你的任务是找到X 和Y 的最大原创 2016-11-16 22:48:19 · 524 阅读 · 0 评论 -
POJ 3624 Charm Bracelet
DescriptionBessie has gone to the mall’s jewelry store and spies a charm bracelet. Of course, she’d like to fill it with the best charms possible from the N (1 ≤ N ≤ 3,402) available charms. Each charm原创 2016-11-20 17:34:25 · 517 阅读 · 0 评论 -
POJ 1724 Roads(深搜之寻路问题)
DescriptionN cities named with numbers 1 … N are connected with one-way roads. Each road has two parameters associated with it : the road length and the toll that needs to be paid for the road (express原创 2016-12-03 17:50:12 · 2023 阅读 · 0 评论 -
POJ 1011 Sticks(拯救少林神棍)__深搜
DescriptionGeorge took sticks of the same length and cut them randomly until all parts became at most 50 units long. Now he wants to return sticks to the original state, but he forgot how many sticks h原创 2016-12-03 20:16:52 · 1394 阅读 · 0 评论 -
POJ 1321 棋盘问题__深搜
描述在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。输入输入含有多组测试数据。 每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <= n 当为-1 -1时原创 2016-12-04 17:50:27 · 425 阅读 · 0 评论 -
POJ 2488 A Knight's Journey__深搜
DescriptionBackground The knight is getting bored of seeing the same black and white squares again and again and has decided to make a journey around the world. Whenever a knight moves, it is two s原创 2016-12-04 20:17:47 · 351 阅读 · 0 评论 -
POJ 2676 Sudoku(数独)__深搜
DescriptionSudoku is a very simple task. A square table with 9 rows and 9 columns is divided to 9 smaller squares 3x3 as shown on the Figure. In some of the cells are written decimal digits from 1 to 9原创 2016-12-05 23:08:19 · 415 阅读 · 0 评论 -
POJ 1037 A decorative fence(美丽栅栏)__动态规划
DescriptionRichard just finished building his new house. Now the only thing the house misses is a cute little wooden fence. He had no idea how to make a wooden fence, so he decided to order one. Someho原创 2016-12-11 01:16:54 · 1848 阅读 · 0 评论 -
POJ 1190 生日蛋糕__深搜
描述7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体。 设从下往上数第i(1 <= i <= M)层蛋糕是半径为Ri, 高度为Hi的圆柱。当i < M时,要求Ri > Ri+1且Hi > Hi+1。由于要在蛋糕上抹奶油,为尽可能节约经费,我们希望蛋糕外表面(最下一层的下底面除外)的面积Q最小。 令Q = Sπ,请编程对给出的N和M,找出蛋糕的制原创 2016-12-11 12:07:49 · 693 阅读 · 0 评论 -
POJ 1416 Shredding Company__深搜
DescriptionYou have just been put in charge of developing a new shredder for the Shredding Company Although a “normal” shredder would just shred sheets of paper into little pieces so that the contents原创 2016-12-14 23:22:45 · 518 阅读 · 0 评论 -
POJ 1077 Eight(八数码) 双向广搜
DescriptionThe 15-puzzle has been around for over 100 years; even if you don’t know it by that name, you’ve seen it. It is constructed with 15 sliding tiles, each with a number from 1 to 15 on it, and原创 2016-12-28 23:23:35 · 988 阅读 · 0 评论 -
广度优先搜索(BFS与双向BFS)_"127. Word Ladder"为例解法详解
摘录于清华大学课件,如果后面学习遇到更好的描述再更新。BFS(){ 初始化队列 while(队列不为空且未找到目标节点) { 取队首节点扩展,并将扩展出的非重复节点放入队尾; 必要时要记住每个节点的父节点; }}原创 2016-12-30 08:28:23 · 890 阅读 · 2 评论 -
OJ 4110 圣诞老人的礼物-Santa Clau’s Gifts__贪心
描述圣诞节来临了,在城市A中圣诞老人准备分发糖果,现在有多箱不同的糖果,每箱糖果有自己的价值和重量,每箱糖果都可以拆分成任意散装组合带走。圣诞老人的驯鹿最多只能承受一定重量的糖果,请问圣诞老人最多能带走多大价值的糖果。输入第一行由两个部分组成,分别为糖果箱数正整数n(1 <= n <= 100),驯鹿能承受的最大重量正整数w(0 < w < 10000),两个数用空格隔开。其余n行每行对应一箱糖果,原创 2016-12-30 21:05:38 · 2817 阅读 · 0 评论 -
POJ 3104 Drying(烘凉衣服)__二分
DescriptionIt is very hard to wash and especially to dry clothes in winter. But Jane is a very smart girl. She is not afraid of this boring process. Jane has decided to use a radiator to make drying fa原创 2016-12-30 22:48:03 · 589 阅读 · 0 评论 -
POJ 1328 Radar Installation(雷达安装)__贪心
DescriptionAssume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. Each small island is a point locating in the sea side. And any radar installation, locati原创 2016-12-31 18:09:14 · 594 阅读 · 0 评论 -
POJ 1505 Copying Books(誊抄书籍)__二分+贪心
DescriptionBefore the invention of book-printing, it was very hard to make a copy of a book. All the contents had to be re-written by hand by so called scribers. The scriber had been given a book and a原创 2017-01-01 21:49:35 · 870 阅读 · 0 评论 -
POJ 1753 Flip Game_广搜
##Description Flip game is played on a rectangular 4x4 field with two-sided pieces placed on each of its 16 squares. One side of each piece is white and the other one is black and each piece is lying原创 2017-01-06 22:28:37 · 395 阅读 · 0 评论 -
POJ 2456 Aggressive cows__二分
DescriptionFarmer John has built a new long barn, with N (2 <= N <= 100,000) stalls. The stalls are located along a straight line at positions x1,…,xN (0 <= xi <= 1,000,000,000). His C (2 <= C <= N) co原创 2017-01-06 23:19:56 · 382 阅读 · 0 评论 -
POJ 2393 Yogurt factory__贪心
DescriptionThe cows have purchased a yogurt factory that makes world-famous Yucky Yogurt. Over the next N (1 <= N <= 10,000) weeks, the price of milk and labor will fluctuate weekly such that it will c原创 2017-01-08 17:26:45 · 447 阅读 · 0 评论 -
POJ 1042 Gone Fishing(钓鱼问题)__贪心
DescriptionJohn is going on a fishing trip. He has h hours available (1 <= h <= 16), and there are n lakes in the area (2 <= n <= 25) all reachable along a single, one-way road. John starts at lake 1,原创 2017-01-09 23:54:58 · 835 阅读 · 0 评论 -
OJ 垃圾炸弹__枚举
描述2014年巴西世界杯(2014 FIFA World Cup)开踢啦!为了方便球迷观看比赛,里约街道上很多路口都放置了的直播大屏幕,但是人群散去后总会在这些路口留下一堆垃圾。为此巴西政府决定动用一种最新发明——“垃圾炸弹”。这种“炸弹”利用最先进的量子物理技术,爆炸后产生的冲击波可以完全清除波及范围内的所有垃圾,并且不会产生任何其他不良影响。炸弹爆炸后冲击波是以正方形方式扩散的,炸弹威力(扩散距原创 2017-01-17 11:46:04 · 3306 阅读 · 0 评论 -
OJ 7214 最大公约数
描述输入两个整数M, N,输出它们的最大公约数。输入输入包含若干组测试数据(不多于40000组),每行一组数据包含两个非0整数M, N。输出对于每一组数据输出M、N的最大公约数。样例输入 2364 456样例输出 12分析求最大公约数基本上任何书都有的例题,用辗转相除法搞定,可用数学归纳法证明,具体可Google百科。实现#include <iostream>#include <cs原创 2017-01-17 12:39:28 · 765 阅读 · 0 评论 -
OJ 7215 简单的整数划分问题__动态规划
描述将正整数n 表示成一系列正整数之和,n=n1+n2+…+nk, 其中n1>=n2>=…>=nk>=1 ,k>=1 。 正整数n 的这种表示称为正整数n 的划分。正整数n 的不同的划分个数称为正整数n 的划分数。输入标准的输入包含若干组测试数据。每组测试数据是一个整数N(0 < N <= 50)。输出对于每组测试数据,输出N...原创 2017-01-17 21:31:00 · 2242 阅读 · 4 评论 -
OJ 7216 Minecraft__枚举
描述Minecraft是一个几乎无所不能的沙盒游戏,玩家可以利用游戏内的各种资源进行创造,搭建自己的世界。 在Minecraft中,基本的建筑元素是边长为1个单位的立方体,Tony想用N个这种小立方体搭建一个长方体,并用他珍藏已久的贴纸对其进行装饰。如果一张贴纸可以贴满小立方体的一个面。那么,他需要用掉多少张贴纸呢?输入一个整数N,表示小明所拥有的小立方体的个数。N不会超过1000。输出一个整原创 2017-01-17 23:50:33 · 1367 阅读 · 3 评论 -
OJ 7217 猴子吃桃__枚举
描述海滩上有一堆桃子,N只猴子来分。第一只猴子把这堆桃子平均分为N份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子接着把剩下的桃子平均分成N份,又多了一个,它同样把多的一个扔入海中,拿走了一份。第三、第四、……,第N只猴子仍是最终剩下的桃子分成N份,扔掉多了的一个,并拿走一份。 编写程序,输入猴子的数量N,输出海滩上最少的桃子数,使得每只猴子都可吃到桃子。输入一个整数N。输原创 2017-01-18 20:46:15 · 2061 阅读 · 0 评论 -
OJ 7218 献给阿尔吉侬的花束__广搜
描述阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫。今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终点,就在终点放了一块阿尔吉侬最喜欢的奶酪。现在研究员们想知道,如果阿尔吉侬足够聪明,它最少需要多少时间就能吃到奶酪。迷宫用一个R×C的字符矩阵来表示。字符S表示阿尔吉侬所在的位置,字符E表示奶酪所在的位置,字符#表示墙壁,字符.表示可以通行。阿尔吉侬在1个单位时间内可原创 2017-01-19 23:00:56 · 1541 阅读 · 0 评论 -
OJ 7219 复杂的整数划分各变形题总结__动态规划
描述将正整数n 表示成一系列正整数之和,n=n1+n2+…+nk, 其中n1>=n2>=…>=nk>=1 ,k>=1 。 正整数n 的这种表示称为正整数n 的划分。输入标准的输入包含若干组测试数据。每组测试数据是一行输入数据,包括两个整数N 和 K。 (0 < N <= 50, 0 < K <= N)输出对于每组测试数据,输出以下三行数据: 第一行: N划分成K个正整数之和的划分数目 第二原创 2017-02-05 12:13:12 · 3338 阅读 · 0 评论 -
OJ 40 潘多拉星球的悬浮公寓__深搜
描述在潘多拉星球,纳威人也热衷于搞房地产卖给中国人。他们把空中的悬浮山切割成一个个的立方体,然后在上面盖房子。一个立方体就是一个公寓楼。在悬浮山的表面上,重力是朝向山体中心的,因此每个面都有能住人的房间。作为到处投资的中国IT新贵,你看上了一座悬浮公寓,想知道这个公寓里面有多少个房间,以及最大的房间有多大。自己写个程序解决这个问题吧。立方体的每个面被划分为k*k(k<20)个方格,方格有可能是平地,原创 2017-02-05 19:24:54 · 1565 阅读 · 0 评论 -
OJ 4105 拯救公主__广搜
描述多灾多难的公主又被大魔王抓走啦!国王派遣了第一勇士阿福去拯救她。 身为超级厉害的术士,同时也是阿福的好伙伴,你决定祝他一臂之力。你为阿福提供了一张大魔王根据地的地图,上面标记了阿福和公主所在的位置,以及一些不能够踏入的禁区。你还贴心地为阿福制造了一些传送门,通过一个传送门可以瞬间转移到任意一个传送门,当然阿福也可以选择不通过传送门瞬移。传送门的位置也被标记在了地图上。此外,你还查探到公原创 2017-02-10 22:42:35 · 2262 阅读 · 0 评论 -
OJ 7222 怀表问题__深搜
描述怀表是由一个表链和一个表盘连接而成的。同时,表链又是由多个长度为1的表链组件连接而成的。小明现有一个表盘和多个长度为1的表链组件。他希望组合成一个完整的怀表当做生日礼物送给爸爸。 表盘和表链组件的两端都有表扣可以和其它的表链组件或者表盘相连。 一共有两种表扣设计,分别是“L” 和“V”。表链组件和表盘的左右两端可以使用相同的或者不同的表扣设计,因此我们有以下四种不同的表链组件和表盘设计方式,原创 2017-02-13 22:04:12 · 1153 阅读 · 0 评论 -
OJ 7223 至少有多少只恼人的大青蛙?__深搜
描述有一种大青蛙会跳越稻田,从而踩踏稻子。农民在早上看到被踩踏的稻子,希望知道晚上有多少青蛙穿越自家的稻田。每只青蛙总是沿着一条直线跳跃稻田,而且每次跳跃的距离都相同。 如图1和图2所示,稻田里的稻子组成一个栅格,每棵稻子位于一个格点上。而青蛙总是从稻田的一侧跳进稻田,然后沿着某条直线穿越稻田,从另一侧跳出去。 如图3所示,可能会有多只青蛙从稻田穿越。青蛙的每一跳都恰好踩在一棵水稻上,将这棵水稻原创 2017-02-19 20:47:26 · 1410 阅读 · 2 评论