自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 收藏
  • 关注

原创 将博客搬博客园

 其实是http://www.cnblogs.com/jdflyfly/

2014-04-08 14:55:16 119

原创 工厂模式总结

简单工厂模式,工厂方法模式和抽象工厂模式都是属于创建型设计模式,这三种创建型模式都不需要知道具体类。我们掌握一种思想,就是在创建一个对象时,需要把容易发生变化的地方给封装起来,来控制变化(哪里变化,封装哪里),以适应客户的变动,项目的扩展。 简单工厂模式:简单工厂没有抽象类,只有一个具体工厂类如MyFactory,然后MyFactory里面有个工厂方法CreateProduct返回一个...

2014-03-05 10:04:55 121

原创 pat 1018. Public Bike Management (30)

链接:http://pat.zju.edu.cn/contests/pat-a-practise/1018 题意(转biaobiaoqi):以杭州的公用自行车站点管理为背景。每个站点是一个节点,每个节点上最多停放 Cmax 辆自行车,Cmax/2 为节点的最佳状态。不同节点间距离不同,整个构成了一张带权无向图。要求从起始点(公用自行车管理中心)出发,去目的地维护目的地节点的车辆状态,如...

2014-02-27 22:59:40 135

原创 pat 1019. General Palindromic Number (20)

链接:http://pat.zju.edu.cn/contests/pat-a-practise/1019 题意:给定一个十进制数和一个进制,判断该数字在该进制下是否为回文。 分析:简单的数字进制处理。 #include<stdio.h>int numStr[100];int idx;int palindrome(int num,int ...

2014-02-27 22:58:52 110

原创 pat 1020. Tree Traversals (25)

链接:http://pat.zju.edu.cn/contests/pat-a-practise/1020 题意:给定二叉树的后序遍历和中序遍历,求层序遍历。 分析:根据后续遍历和中序遍历,可以递归的构建树,建好树之后利用queue层序遍历。 #include<stdio.h>#include<stdlib.h>#include<s...

2014-02-27 22:58:32 100

原创 1022. Digital Library (30)

链接:http://pat.zju.edu.cn/contests/pat-a-practise/1022 题意:给定 N (<=10000) 本书的信息,包括 7 位 ID,最多 80 字符的书名,最多 80 字符的作者名, 多个最多 10 字符的关键词,最多 80 字符的出版商和属于 [1000, 3000]的出版时间。 另给出 M (<=1000) 的查询请求,按照查...

2014-02-27 22:58:13 102

原创 pat 1011. World Cup Betting (20)

链接:http://pat.zju.edu.cn/contests/pat-a-practise/1011 题意:给定数据,找到每行的最大值根据公式计算结果。 分析:简单模拟题目。 #include<stdio.h>double bigger(double a, double b) { if (a > b) return a; e...

2014-02-25 13:56:03 94

原创 pat 1009. Product of Polynomials (25)

链接:http://pat.zju.edu.cn/contests/pat-a-practise/1009 题意:计算多项式的乘积。 分析:基于编程方便,还是采用数组的方式来实现。 #include<stdio.h>typedef struct Poly { int exp; double coe;} Poly;Poly a[10...

2014-02-25 13:55:48 98

原创 pat 1008. Elevator (20)

链接:http://pat.zju.edu.cn/contests/pat-a-practise/1008 题意:给出楼层序列计算电梯运行时间。 分析:简单模拟题。 #include<stdio.h>int main() { int n; int count = 0; int cur = 0; int tmp; scanf("%d...

2014-02-25 13:55:32 104

原创 pat 1007. Maximum Subsequence Sum (25)

链接:http://pat.zju.edu.cn/contests/pat-a-practise/1007 题意:经典的最大连续子串问题。 分析:采用最优的O(N) 算法。 #include<stdio.h>int seq[10005];int main() {// freopen("in.txt", "r", stdin); int...

2014-02-25 13:55:20 90

原创 pat 1006. Sign In and Sign Out (25)

链接:http://pat.zju.edu.cn/contests/pat-a-practise/1006 题意:分析每个人到达和离开实验室的时间,找到最早来和最晚走的人。 分析:简单的一次遍历寻找最大最小值,我直接利用字符串比较时间的大小,也可以读入int 转化成分钟处理。 #include<stdio.h>#include<string.h&g...

2014-02-25 13:54:52 149

原创 pat 1005. Spell It Right (20)

链接:http://pat.zju.edu.cn/contests/pat-a-practise/1005 题意:计算一个大数每位数字相加之和,结果输出每位数字对应的英文。 分析:结果输出利用hash的思想。 #include<stdio.h>int arr[20];int idx = 0;char str[10][10] = { "zer...

2014-02-24 15:47:54 110

原创 pat 1004. Counting Leaves (30)

链接: http://pat.zju.edu.cn/contests/pat-a-practise/1004 题意:统计一颗给定树的每层的叶子节点数目。  分析:基于节点数据量比较小,可以简单地利用链接矩阵的方式存储树,然后利用dfs遍历,遍历的时候记录深度变量用于统计。  #include<stdio.h>int mat[105][105];...

2014-02-24 15:41:17 105

原创 pat 1003. Emergency (25)

链接:http://pat.zju.edu.cn/contests/pat-a-practise/1003 题意:计算两个点之间的加权最短路径,若有多条最短路径,选取沿途节点权重和最大的。 分析:利用Dijkstra算法求出最短路径,然后利用dfs遍历选取路径最短并且节点权重最大。 #include<stdio.h>#include<stdlib....

2014-02-24 15:28:28 98

原创 1002. A+B for Polynomials (25)

链接:http://pat.zju.edu.cn/contests/pat-a-practise/1002 题意:多项式相加并且格式化输出。 分析:指数范围不大,可以简单用数组实现,数组的索引对应指数,内容对应系数。  #include<stdio.h>double result[1005];int main() { int k; ...

2014-02-24 15:23:18 92

原创 pat 1001. A+B Format (20)

链接:http://pat.zju.edu.cn/contests/pat-a-practise/1001 概述:计算a+b的值,并且将和按照每三位一个逗号分隔的方式输出。 注意点:负数和零的处理。 #include<stdio.h>int main() { int a, b, c; scanf("%d%d", &a, &b)...

2014-02-24 12:26:48 91

原创 uva 10341 - Solve It

根据一些数学知识可知,整个函数是单调递减的,所以根据二分法找零点。需要注意 浮点类型数字的比较方法。 #include<stdio.h>#include<math.h>#include<float.h>int p, q, r, s, t, u;double calcu(double x) { return p * exp...

2014-01-13 21:33:28 122

原创 uva 270 - Lining Up

题目中特别说明注意高效,估计简单的O(n^3)枚举法要超时,试了下果然。不过这个题目以前在上普林斯顿的algorithms里有个大程跟这个95%相似的问题,所以我一下子就想到了优化的解法,复杂度是O( (n^2)logn )。优化解法:对于每个点,按照其他点相对于这个点的斜率排序,在排序的序列中找寻最长的斜率相同的子串长度,其中最费时的是排序,所以总体的复杂度就是n 乘以 nlogn。...

2014-01-13 17:07:13 107

原创 uva 10132 - File Fragmentation

基本思路:先按照长度排序,总长度等于第一个子串加上最后一个子串,然后从最后开始枚举子串与子串file[0]相加,也从后开始找到另一个子串与子串file[1]相加,并交换相加顺序,直到两个先加的串相等。注意考虑所有子串都相等的特殊情况。 #include<stdio.h>#include<string.h>#include<stdlib.h>...

2014-01-12 14:01:07 120

原创 uva 10763 - Foreign Exchange

我的想法是都存到一个数组里,录入的时候将如果后面一个数字小,就交换下位置,然后按照两个数字依次排序,排序之后正常情况应该是依次两个两个相等,否则就有问题。有人是from和to分别放到两个数组,依次排序后一对一比较,但是这种情况有bug,比如A到B,B到C,C到A理论上应该No,这种解法确是YES(虽然据说好像没有这种case,也能AC...)。 #include<stdio.h...

2014-01-12 10:38:27 117

原创 uva 10905 Children's Game

贪婪法,先排序。数字好像超过了一般整数的大小,数组稍微开大点。  #include<stdio.h>#include<stdlib.h>#include<string.h>char num[55][200];int cmp(const void *a, const void* b) { char *aa = (char*...

2014-01-12 10:31:19 78

原创 uva 10123 - No Tipping

 略蛋疼的一道题目,研究了好久,最开始简单的枚举回溯法,果断超时。网上看到了好多人的优化,最后选择了一种线性的解法,只需扫描一遍即可。基本思路:将问题转化为依次往板上放包裹,为了让板尽可能的平衡,一定是先放扭矩小的上去,所以先将包裹分类,左支点左边的一波,中间的一波,右支点右边的一波,分别排序,把中间的一波先放上去,这样可以增加系统的稳定性,然后左右两边依次往上放直到一边失去平衡,换另一...

2014-01-07 09:47:49 187

原创 uva 639 - Don't Get Rooked

回溯法,注意回溯回来之后状态要恢复,冲突判断是从当前点向四周辐射,直到出界或者遇到墙,如果有遇到其他车,说明冲突。 #include<stdio.h>int n;int board[5][5];int maxNum;int isConflicted(int i, int j) { int o, p; for (o = i; o >= 0 ...

2014-01-05 22:53:15 89

原创 uva 216 - Getting in Line

开始还以为最小生成树,结果最多8个节点,明显是要暴力枚举。先递归生成每种排列,计算距离总和,记录下最小的,最后输出。 #include<stdio.h>#include<math.h>#include<string.h>typedef struct Point { int x; int y;} Point;Poi...

2014-01-03 23:43:38 63

原创 uva 10474 - Where is the Marble?

太简单了没啥好说的,排下序然后搜索下,看不出要怎么用回溯法。  #include<stdio.h>#include<stdlib.h>#define MAX 10005int marbles[MAX];int cmp( const void*a, const void*b) { return *(int*) a - *(in...

2014-01-03 17:47:06 67

原创 uva 11205 - The broken pedometer

暴力枚举所有的子集列,比较在每种情况下每行是否唯一,我把每行数据当成2进制转化为10进制之后比较的。这里枚举子集是用的位向量法,产生的子集序列 子集大小变化是不规则的,但是一旦有小的子集可以区分所有行,子集大的情况就不用计算了,直接可以忽略。  #include<stdio.h>#include<math.h>#include<stdlib.h&...

2013-12-26 20:46:56 62

原创 uva 10167 - Birthday Cake

简单枚举法不解释。 #include<stdio.h>#define MAX 105int cherry[MAX][2];int n;void search() { int i, j, k; int oneHalf; int theOther; int error; for (i = -500; i <= 500; i++...

2013-12-26 16:31:02 65

原创 uva 532 - Dungeon Master

bfs在三维空间的扩展,仔细一点问题不大。 #include<stdio.h>#include<string.h>typedef struct Point { int x; int y; int z; int len;} Point;typedef Point* Ptr;char dungeon[40][40][40...

2013-12-25 13:38:50 64

原创 uva 439 - Knight Moves

先研究下国际象棋中马是怎么走的,然后bfs就哦了。 #include<stdio.h>#include<string.h>#include<stdlib.h>int map[10][10];typedef struct Point { int x; int y; int dis;} Point;typed...

2013-12-24 15:16:43 89

原创 uva 705 - Slash Maze

开始无从下手,后来参考了别人的思路 http://blog.youkuaiyun.com/shuangde800/article/details/7726620有了思路后不知道怎么求环,后来发现题目说了没岔路。。 #include<stdio.h>#include<string.h>#define MAX 200int w, h;char maze[M...

2013-12-23 23:56:30 75

原创 uva 10562 - Undraw the Trees

有点dfs的感觉,树是连通的,可以从根节点一直追踪到叶子。有些比如空树的特殊情况要小心。 #include<stdio.h>#include<string.h>#include<ctype.h>#define MAX 210char tree[MAX][MAX];int idx;void drawTree(int i...

2013-12-18 21:09:22 81

原创 uva 839 - Not so Mobile

递归判断,若有不平衡,标记flag,平衡则返回左右子树重量和。 #include<stdio.h>int flag;int isBalanced() { int wl, dl, wr, dr; scanf("%d%d%d%d", &wl, &dl, &wr, &dr); if (!wl) wl = isBa...

2013-12-17 20:26:20 105

原创 uva 327 - Evaluating Simple C Expressions

我的做法没有涉及什么语法树,主要是字符串处理,水平略搓写的有点麻烦,题目说忽略空格,youcase比如 a++有可能是a  +  +,导致WA,后来加上了预处理去掉所有空格才AC。 #include<stdio.h>#include<string.h>char tmpStr[200];char expr[200];int appeared[2...

2013-12-17 16:55:58 93

原创 uva 699 - The Falling Leaves

根据给出的先序遍历顺序边构造树边统计树叶之和,根节点在大数组中间索引处开始,左右树依次向两边展开。  #include<stdio.h>#define MAX 1000int result[MAX];int cases=1;void printLeaves() { printf("Case %d:\n",cases++); int i;...

2013-12-17 10:56:24 88

原创 uva 784 - Maze Exploration

 比较简单,4个方向dfs。  #include<stdio.h>#include<string.h>#include<ctype.h>char maze[35][85];int lines;void printMaze() { int i; for (i = 0; i < lines; i++) {...

2013-12-13 12:32:26 88

原创 uva 572 - Oil Deposits

八个方向dfs,统计个数。 #include<stdio.h>#define MAX 105int map[MAX][MAX];int m, n;void dfs(int i, int j) { if (i < 0 || j < 0 || i > m || j > n) return; if (map[i][j...

2013-12-13 10:18:47 79

原创 uva 657 - The die is cast

需要两层dfs,第一层找骰子,第二层在骰子里找点数。递归时访问过的节点记得标记用以结束递归。  #include<stdio.h>#include<stdlib.h>char map[55][55];int w, h;int count;int num;int arr[1000];int idx = 1;void s...

2013-12-13 10:04:12 82

原创 uva 712 - S-Trees

题目有点长,但是思路很简单,找出每次的路径2进制序列然后在叶子里找到对应的0或1值即可。 #include<stdio.h>#include<stdlib.h>#include<math.h>int orders[10];char leaves[200];int num=1;int main() { int n; c...

2013-12-06 16:35:41 88

原创 297 - Quadtrees

简单点实现可以不用把各个节点连接起来建树,递归的扫描一遍,根据每个节点的表示的跨度范围和类型填充一个1024的数组,每个case中两个树依次填充完毕,最后统计数组中1的个数即为结果。  #include<stdio.h>char str[2000];int num[1024];int idx;void buildTree(char *s, int st...

2013-12-06 01:21:17 78

原创 uva 548 - Tree

利用中序和后序构建二叉树然后进行dfs搜索,两步可以同时进行,另外这道题目输入处理也有点麻烦,参考了一些大神的代码,自己重写因为一个值每次case之后未初始化悲剧的RE了好多次。 查了下 runtime error的可能大概有:Runtime Error(ARRAY_BOUNDS_EXCEEDED) // array bounds exceed     数组越界Runtime Err...

2013-12-04 09:58:23 85

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除