- 博客(32)
- 资源 (6)
- 收藏
- 关注
转载 判断异常类型,全面捕获Python的异常
http://ar.newsmth.net/thread-20bf9f3e95cd35-1.html正文: 如果你在写程序时遇到异常后想进行如下处理的话请参考我下面写的对异常处理的方法: 假设有下面的一段程序: try: 语句1 语句2 . 语句N except .........: print .....
2012-08-31 13:43:56 8537
原创 hdoj 1312 Red and Black 深度遍历的实现
题目大意:一个人站在一块黑色瓷砖上,他只能向四个方向走,不能走到红色瓷板上,求能走过的黑色瓷板,走过了的黑色瓷板不算深度遍历,记录走过的格子#include #include #include #include #include #include using namespace std;struct node{ int x, y;};const int maxn
2012-08-25 15:55:37 588
转载 poj 1010 邮票问题
http://blog.csdn.net/ju136/article/details/6969826http://angels1.0.blog.163.com/blog/static/8458050420087414056738/题意: 给出n种邮票,每种邮票有自己的面值(面值可能重复) 指定m种“总面值”,对每种“总面值”,求解满足如下条件的组合以达到该“总面值”(1)所
2012-08-25 15:53:16 763
转载 poj 1644 To Bet or Not To Bet
题目大意: 类似于一个抛硬币下棋的游戏,棋盘是一个线性表,初始位置在最左端start处,目标在最右端end处,中间有m格,每格上都会有一个说明+n,-n,L,或者 0,分别意味着向右走n格,向左走n格,失去一轮机会,无任何说明。每一轮都会先抛硬币,正面朝上向右走一步,反面朝上向右走2步,正反面朝上的几率是相同的,各占二分之一。现在给出棋盘的大小,以及棋盘上每一格的说明,求在t轮或者少于t
2012-08-25 15:44:09 1039
转载 最大流问题
http://www.cppblog.com/Icyflame/archive/2009/06/23/88364.html最大流问题 一、 定义与定理流网络:G=(V, E)是一个有向图,其中每条边(u, v)∈E均有一个非负容量c(u, v) ≤0,否则c(u, v)为0.流网络中有两个特别的顶点:源点s和汇点t。对于每个顶点v∈V,都存在一条路径s…v…t。流
2012-08-25 15:28:58 3119
原创 hdoj 1238 Substrings
题目大意:求一组字符串的最长子串,子串包括逆串匹配解题思路:选一个最短字符串,枚举其子串,跟其他字符串用kmp正匹配和逆匹配注意没有子串匹配的情况。#include #include #include #include using namespace std;const int maxn = 102;char str[maxn][maxn];int slen[maxn
2012-08-25 10:52:23 735
原创 hdoj 1372 Knight Moves
题目大意:国际象棋骑士从起点到终点的最少步数解题思路:水题.....宽度遍历#include #include #include #include #include #include using namespace std;struct node{ int x, y, step;};const int maxn = 8;bool square[maxn][max
2012-08-25 00:15:45 541
原创 hdoj 1312 Red and Black
题目大意:一个人站在一块黑色瓷砖上,他只能向四个方向走,不能走到红色瓷板上,求能走过的黑色瓷板,走过了的黑色瓷板不算解题思路:bfs, dfs均可,,,,水题BFS:#include #include #include #include #include #include using namespace std;struct node{ int x, y;};
2012-08-24 17:32:57 489
原创 hdoj 1242 Rescue
题目大意:一个迷宫,多个朋友去解救一个人,#表示障碍,不能走,r表示朋友,x表示守卫,走到这位置得消耗2个单元,其他只消耗一个单元,a表示要解决的人。求多个朋友解救到这个人的最短时间解题思路:因为有多个起点,我们可以反过来以a为起点,求到达任意一个r的最短时间。用宽度优先遍历。。。。但是有x节点,消耗2个时间单元,所以保存每次走过的格子状态,即每个格子当前能到达的最短时间。宽度优先遍历
2012-08-24 16:13:28 452
原创 hdoj 1241 Oil Deposits
题目大意:@表示油田,求一共有多少组油田是连通的,连通的意思是与@的八个方向相邻解题思路:水题。。用深度优先遍历每个点,每走过了一个油田就标记为走过了。#include #include #include using namespace std;const int maxn = 110;char field[maxn][maxn];int dir[8][2] = {{1,
2012-08-24 15:14:03 696
原创 hdoj 1240 Asteroids!
题目大意:求3维空间的起点到终点的最短距离,中间有障碍X的点不能走。解题思路:水题。。。。。宽度优先遍历#include #include #include #include using namespace std;struct node{ int x, y, z, step;};const int maxn = 11;char space[
2012-08-24 14:34:40 642
原创 poj 1322 Chocolate
题目大意:c种不同颜色的巧克力,每种巧克力同样多,把巧克力一个一个拿到桌子上,当发现有相同颜色就全吃掉,求取出了n个后,还剩m个在桌子的概率。解题思路:dp[i][j]表示取出了i块巧克力,剩下了j块的概率动态规划,当m,n同奇同偶时dp[i][j] = d[i - 1][j - 1] * (c - j + 1) / c + dp[i - 1][j + 1] * (j + 1) / c
2012-08-23 01:43:02 1321
原创 poj 1947 Rebuilding Roads 树状DP + 分组背包
题目大意:给定一颗树,要你求删除一些边使得形成包含p个节点的子树,要删除的最少边。注意,这颗子树的根节点不一定是整颗树的根节点。解题思路:树状DP,dp[i][j]表示以i为根节点的子树,包含j个节点(包含了i)删除最少的边。dp[i][1] = i的孩子节点数,因为只有i子树包含1个节点,即自身,删除连接它孩子结点所有边。dp[i][j] = min(dp[i][k] + dp[
2012-08-18 23:51:45 766
转载 hdoj 2196Computer 树形DP
参考:http://blog.csdn.net/woshi250hua/article/details/7642536题目大意:求树中每个点出发的最长链的长度解题思路:建立树的每个节点的双向边,先按照树的根节点1出发,深度遍历求得以每个节点u为根节点子树到叶子节点v的最大距离dp[u],这次深度遍历的过程中,u到叶子节点v是以u为根节点的子树的最大距离,保存v到u的父节点的距离len。
2012-08-18 17:10:05 510
原创 hdoj 1712 ACboy needs your help
题目大意:给你n个作业,每个作业i,用j天时间完成所得的收益为A[i][k],要你求m天内n个作业的最大收益。解题思路:动态规划。水题。。。。。。。。。d[i][j] 表示前i个作业任务,在j天内的最大收益那么dp[i][j] = max(dp[i-1][j-k] + A[i][k]), 1#include #include #include #include using
2012-08-14 01:21:12 515
原创 poj 1948 Triangular Pastures 二维背包
题目大意:给定一些棍子求这些棍子能够组成的三角形的最大面积。解题思路:这里要利用三角形的面积公式p = (a + b + c) / 2, 周长的一半三角形面积 = sqrt(p * (p - a) * (p - b) * (p - c))dp[k][i][j]表示前k根棍子,边长为i和j是否能组成一个三角形。所以dp[k][i][j] = dp[k-1][i - edge[k]
2012-08-11 00:03:43 556
转载 汽车加油问题 zju 1033
原题:http://pat.zju.edu.cn/contests/pat-practise/1033 转载:http://blog.csdn.net/hackbuteer1/article/details/7402127#include#include#includeusing namespace std; struct Node{ double price; dou
2012-08-10 15:26:48 1431
原创 poj 2465 Adventures in Moving - Part IV
题目大意:有一辆卡车,从一个城市A到达城市B,车的油箱为200,初始有100的燃料,每走一个单元路程消耗1个单元的燃料。这里有几个加油站,每个加油站是按照距离A城市的距离从小到大排列的,每个加油站每单元的燃料的价格是不同的。要你求卡车到终点加燃料的花费最小时多少,若卡车到不了终点,输出Impossible解题思路:动态规划,dp[i][j]表示行驶到第i个加油站,燃料为j是的最小花
2012-08-10 10:37:24 884
原创 poj 2431 Expedition 贪心 + 优先队列
题目大意:有n个加油站,每个加油站的加油的油量有限,距离终点都有一个距离。一个卡车的油箱无限,没走一个单元要消耗一单元的油,问卡车到达终点的最少加多少次油。解题思路:贪心。。。。。卡车走得越远越好,要是不能到达终点,就选择经过的油站里面,加油量最多的加油,然后继续。所以先按照加油站距离终点的距离,从大到小排列。利用优先队列来存经过的加油站,根据加油站加油的油量多少排序。
2012-08-10 00:42:47 3789
转载 poj 2244 Eeny Meeny Moo 约瑟夫环
题目大意:有n个城市编号1,2,3,...,n。第1个城市开始网络会断,然后向后数m个,数到的城市会断网,然后继续数,数到n时从1接上数,之前断网的城市忽略,让你求第2个城市最后断网,m的最小值。解题思路:约瑟夫环,枚举m,求最小m。约瑟夫环的介绍看这个:http://blog.csdn.net/wuzhekai1985/article/details/6628491讲的很详细。这里再
2012-08-09 23:30:36 650
原创 poj 1256 Anagram
求字符串的字典序,不过字典序要按照'A'同http://blog.csdn.net/xiaoxiaoluo/article/details/7848915这里有方法介绍,只要加个比较函数就可以。#include #include #include #include using namespace std;const int maxn = 100;char str[maxn
2012-08-09 20:19:10 662
原创 poj 2255 二叉树 已知先序和中序,求后序
题目大意:已知二叉树的先序和中序排列,要你求它的后序解题思路:水题,根据二叉树的性质,递归求解,DBACEGF ABCDEFGD为二叉树的根节点, BAC, ABC为以D为根结点的左子树的先序和中序排列,EGF,EFG为以D为根结点的右子树的先序和中序排列。然后递归求解#include #include #include using namespace std;
2012-08-09 16:46:35 1546
原创 poj 1700过河问题
题目大意:N个人要过河,只有一个蜡烛且只有一条船,船每次最多坐2个人。不管怎样,过河者(1个人或者2个人)都必须有蜡烛,所以过河后可能需要人返回送蜡烛,然后再继续过河。问怎样过河时间最短。解题思路:贪心,先把时间从小到大排列。考虑N等于1时,就是一个人过河的时间,N等于2时,为两个人的最大时间,N等于3是,为最小和次小过去,最小回来,然后最小和最大时间过去,总时间为T[0] + T[1]
2012-08-08 13:15:08 691
原创 zoj 2107最短点对
题目大意:要你求最短点对的中点距离解题思路:分治法求最短点对,具体参考《算法设计与分析》(郑宗汉 郑晓明) p100面。把点按照X坐标的大小从小到大排列,然后把点按Y坐标从小到大排列。把点集二分,递归求出左边点集合的最短点对距离,和右边点集最短点对距离。取最小值d取中轴左右d距离的点对,比较这些点对的距离,看是否小于d。#include #include #inc
2012-08-07 10:18:47 1032
原创 组合模式
《大话设计模式》组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。//component.h#ifndef _COMPONENT_H_#define _COMPONENT_H_#include #include #include using namespace std;class Company{
2012-08-05 23:45:12 537
原创 备忘录模式
《大话设计模式》备忘录:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态//memo.h#ifndef _MEMO_H_#define _MEMO_H_#include using namespace std; class RoleStateMemento{ public: RoleStateM
2012-08-05 22:26:05 508
原创 适配器模式
《大话模式》适配器模式,将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。//adapter.h#ifndef _ADAPTOR_H_#define _ADAPTOR_H#include #include using namespace std;class Player{ public
2012-08-05 17:56:24 355
原创 状态模式
《大话设计模式》状态模式:当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。//state.h#ifndef _STATE_H_#define _STATE_H_#include using namespa
2012-08-05 00:44:48 360
原创 观察者模式
来自《大话设计模式》观察者模式定义了一种一对多的依赖关系。让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。这里C++实现,得注意类之间的相互引用。。。。//subjet.h#ifndef _SUBJECT_H_#define _SUBJECT_H_#include #include #include #i
2012-08-04 16:04:23 502
转载 其它数学知识及算法
http://blog.sina.com.cn/s/blog_59872d8d0100agdb.html5.1 鸽巢原理1.简单形式如果n+1个物体被放进n个盒子,那么至少有一个盒子包含两个或更多的物体。例1:在13个人中存在两个人,他们的生日在同一月份里。例2:设有n对已婚夫妇。为保证有一对夫妇被选出,至少要从这2n个人中选出多少人?(n+1)
2012-08-03 14:19:55 782
原创 poj 2392 Space Elevator
题目大意:有k中梯子材料,每种材料有个数c_i, 高度h_i,并且这种材料高度不能超过a_i ,问利用这些材料能最高堆多高的梯子。解题思路:先按照a_i从小到大排序,然后分别把a_i作为容量,转换成多重背包问题。二进制拆分:#include #include #include #include using namespace std;struct node{ int h
2012-08-01 23:42:37 567
原创 poj 1276 Cash Machine
题目大意:给定一个数m,还有一组数,分别表示这个元素的个数num[i], 单个价值为value[i]。要你求最这组元素价值和最接近m的最大值解题思路:多重背包问题,拆分2进制或单调队列同poj 1014一样http://blog.csdn.net/xiaoxiaoluo/article/details/78163782进制拆分方法:#include #include #in
2012-08-01 01:11:27 568
[现代编译原理C语言描述
2012-08-13
UNIX环境高级编程第二版.
2011-12-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人