自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (3)
  • 收藏
  • 关注

原创 菜鸟都能理解的看毛片(KMP)算法

下面我们来见识一下神奇的看毛片算法看毛片算法的思想是用两个指针i和j来指示A和B中的一个位置1) 用i来表示当前匹配到A中的哪个位置啦2) 用j来表示当前匹配到B中的哪个位置啦3) 并且要满足B[1...j]要和A[i+j-1...i]相等哦?很难理解啊,下面的图(图1)应该使你能够一拍脑袋,“哦,我太聪明了,这么简单!”

2013-01-17 20:43:33 94419 5

转载 杭电ACM题目分类

注:最近在刷字符串类别的题目,计划在3月15号之前刷完,欢迎加QQ 823797837共同学习交流,也可以加群ACM新手群161986576,老鸟飞过基础题:1000、1001、1004、1005、1008、1012、1013、1014、1017、1019、1021、1028、1029、1032、1037、1040、1048、1056、1058、1061、1070、1076、1

2013-01-05 04:15:49 1970

原创 DP系列之二进制状态压缩--杭电1074

状态压缩的意图是用每一位二进制表示一个状态,0表示选中状态,1表示不选状态,如果有N个物体,从中选择若干个物体,那么最终选中的状态可以用一个N位的二进制位来表示比如若选择了第1个物体和第3个物体,这种状态为0...0101 //前面的0的个数为N-3若选择了第2个物体,第3个物体,第N个物体,这种状态为1...0110因此,无论选中什么状态,都可以用一个N位的二进制数来表示

2013-01-28 21:17:09 2211 1

原创 杭电OJ——1024 Max Sum Plus Plus 详细分析+优化全过程

Problem DescriptionNow I think you have got an AC in Ignatius.L's "Max Sum" problem. To be a brave ACMer, we always challenge ourselves to more difficult problems. Now you are faced with a more di

2013-01-27 22:58:23 3445

原创 回溯经典之素数环问题

问题描述:假定有从1...n这n(n思路1.我们可以假定已经有一个序列满足任意两个数之和是素数2.下一步要做的就是扩充这个序列,即从剩下的数中寻找一个数,使得这个数和既定序列中最后一个数的和是素数3.如果这个数是最后一个数,那么判断它和第一个数相加的结果是否为素数,如果是,就打印序列,否则什么也不做因为要求的是环,我们可以假定从任意一个数开始,这里假设从1开始/

2013-01-21 19:10:32 1079

原创 回溯法经典—n-皇后问题

n-皇后问题是回溯法中经典中的经典,其基本问题描述是:在一个nxn的格子中放n个皇后,使得每个皇后不能相互攻击,任意两个皇后能够互相攻击的条件是他们在同一条对角线或者同一行或者同一列上问题可以转换为从第0行开始放置皇后一直放到n-1行,使得每一行在放置皇后的同时,不能与前面的皇后相互攻击即列,对角线不冲突即可(行肯定不冲突)伪代码描述search(cur) { //表示开始放置

2013-01-20 22:14:30 1291

原创 LRJ生成可重复的排列

#include using namespace std;void print_emu(int a[], int x[], int n, int cur) { if (cur == 3) { for (int i = 0; i < 3; i++) cout << x[i] << " "; cout << endl; return; } else

2013-01-20 20:14:52 843

原创 回溯法例题之子集树:数组定和问题

问题描述:给定一个数组a和一个整数sum,在数组中取若干个数使得他们的和等于sum问题分析:数组中的元素要么选择,要么不选,且无序,每一种选择都可以看做是解空间的一个元素X[i] = 0或1(0如果我们假设当前已经处理了前t个元素(这t个元素或者选,或者不选),他们的和为c,那么在处理第t+1个元素时,要满足c + a[t+1] #include using namespace

2013-01-20 15:20:49 1958

原创 回溯算法:子集树和排列树

假设现在有一列数a[0],a[1], ...a[n-1]①如果一个问题的解的长度不是固定的,并且解和元素顺序无关,即可以从中选择0个或多个,那么解空间的个数将是指数级别的,为2^n,可以用下面的子集树来表示所有的解(假设这里n=4)PIC. 子集树子集树的算法框架为void backtrack(int t) {//表示访问到第t层,t从0开始if (t

2013-01-18 22:11:41 8620 1

原创 菜鸟都能理解的0-1背包问题的空间优化

如果你不知道什么叫做0-1背包问题,下面是0-1背包问题的简单描述假设有n件物品每件物品的体积为w1, w2……wn   相对应的价值为 v1, v2.……vn。01背包是在n件物品取出若干件放在空间为total_weight的背包里,使得背包的总体积最大关于0-1背包问题没有优化版本,请看这里上面的核心代码是下面这一段 for (int i = 1; i <

2013-01-18 14:55:06 4506

原创 杭电1203回溯+DP

回溯方法是正确的,但是LTE#include using namespace std;inline void offer(int w[], float v[], int n, int& sum, int i,float &mmin, int total, float& c) { if (i == n) { if (c < mmin) mmin = c; ret

2013-01-18 10:51:09 1303

原创 让你的vim新建源文件的时候智能添加注释和代码

打开~/.vimrc文件,在最后一行下面添加如下代码即可autocmd BufNewFile *.py,*.cc,*.sh,*.java exec ":call SetTitle()""新建.py,.cc,.java,.sh,"定义函数SetTitle,自动插入文件头func SetTitle() if expand("%:e") == 'cc' call set

2013-01-14 20:35:21 2618 1

原创 中国剩余定理(也叫孙子定理)

今儿偶尔无聊,看到一个叫做“中国剩余定理”的玩意,觉得煞是好玩,便写一点总结上题目先,假设一个数(1)被3除余2,(2)被5除余4,(3)被7除余6,求满足条件的最小整数lcm(5, 7) 为35 35*2=70刚好除以3余数为1lcm(3, 7) 为21 21*1=21刚好除以5余1lcm(5, 3) 为15 15*1 = 15刚好除以7余1接下来(70*2 +21*

2013-01-10 12:42:33 1368 1

原创 [编程之美]求数组中最长递增子序列

比如下列数组最长递增子序列为1, 2, 4, 6,当我们考虑到第i个元素时,当前最大的递增子序列是完全由前一个元素的最大递增子序列确定的,而不管前面的排列是怎样,因此,这个问题满足无后效性,可以用动态规划来实现LIS[i+1] = max{1, LIS[k] + 1}, array[i+1] > a[k] , k从0到i#include using namespace std;

2013-01-09 09:41:20 1145

原创 c++实现欧拉回路问题

欧拉回路问题由七桥问题而来,其基本问题是是否能一次性不重复地走遍这七座桥,转换为数学问题中的图论就是指的是从图中的一个顶点出发,是否能够一次性不回头地走遍所有的边,算法代码如下#include #include using namespace std;int G[5][5];int visited[5][5];int n = 5;void euler(int u) { for

2013-01-07 14:28:37 5620

原创 c++实现每隔1秒钟执行一段程序

#include #include using namespace std;int getTime() { return clock()/CLOCKS_PER_SEC;}int main() { int i = 0; int lastTime = 0; while (1) { int now = getTime(); if (now - lastTim

2013-01-07 13:20:13 12481 1

原创 LRJ系列 DFS实现拓扑排序(带有回路检测)

DFS实现回路拓扑排序,每一次选一个顶点进行访问,先递归访问其相邻的所有顶点,然后再访问该顶点,便可实现拓扑排序,比如A->B,A->C, A->D, B->E访问A的时候先访问BCD,那么最后的顺序肯定是AB(递归)CD, B递归之后为BE,最终的顺序为ABECD下面举一个具体的例子,见下图算法从V1~V5依次进行,初始的时候栈中元素为空1.u = 1,说明当前递归V1,V1

2013-01-07 13:09:34 1629

原创 杭电acm1028利用母函数求解数字拆分问题

http://acm.hdu.edu.cn/showproblem.php?pid=1028选择母函数 (1+x+x^2+x^3+x^4+x^5+…x^n)*(1+x^2+x^4+x^6+…)*(1+x^3+x^6+x^9+…)*…*(1+x^n)最后的组合方案为x^n的系数,为什么呢?第一个因子(1+x+x^2+x^3+x^4+x^5+…)中x的幂表示组合中可以取的1的个

2013-01-05 21:40:26 1029

原创 c++实现分治法最近点对算法

最近点对的算法是分治法的典型代表,所求的是平面上一堆点,求所有点对的距离的最小值,如果用暴力方法,其复杂度高达O(n*n)显然,效果太差,分治法的思想是将平面上的点分成左右两半,分别求左右两半的最小距离,然后取一个最小值,当然,最近点对还可能会有这样的情况,即一个点在左半边,一个点在右半边,这里,并不需要用暴力的方法求解所有的左边的和右边的最近点对,而是通过数学的一些证明将分治的其余代价降到O(n

2013-01-05 10:45:55 6926 1

原创 杭电1006,神题啊!

#include using namespace std;struct Set { //表示集合[a, b] double a; double b; Set() {} Set(double _a, double _b): a(_a), b(_b) {}};Set intersection(Set s1, Set s2) { Set s; s.a = s1.a >

2013-01-02 21:04:13 1117

原创 华为迷宫算法c++完整实现

原题是迷宫游戏,迷宫只有一个入口和出口,请编写程序输出一条从迷宫入口到出口的路径。为了简单起见,用一个二维数组表示迷宫,0表示可以行走,可以向东,东南,南,西南,西,西北,北,东北八个方向行走, 但不能行走出界,必须从出口出去, 1表示墙不能行走。输入要求:输入文件input.txt第一行包含两个整数row,column, row表示迷宫的行,column表示迷宫的列, 接着row行,

2013-01-01 16:39:17 1742

原创 c/c++实现利用二叉树的先序遍历和中序遍历序列重建树

先序遍历中第一个结点必然是根结点,利用该结点在中序遍历中的位置,将树分为左子树和右子树,然后递归重建左子树和右子树,代码如下#include using namespace std;struct Node { char value; Node* left; Node* right; Node() { }; Node(char c, Node* l = NULL, Node

2013-01-01 14:04:25 2746

原创 c语言中一些常用的函数

1.sscanf()char s[100];scanf("%s", s);int v;sscanf(&s[1], "%d", &v);输入s :(112, 334) 输入s :(1d2, 334) 那么运行以上程序之后v的值分别为112, 1#include using namespace std;int main() { char s[100];

2013-01-01 13:17:52 715

Android开发之方向传感器的使用源码,Eclipse工程文件

Android中的方向传感器在生活中是一个很好的应用,典型的例子是指南针的使用,我们先来简单介绍一下传感器中三个参数x,y,z的含义,以一幅图来说明.....本篇博客地址 http://i.blog.sina.com.cn/blogprofile/profilevisitanaly.php

2012-02-10

易语言_V5.11_完美破解补丁

易语言_V5.11_完美破解补丁

2012-02-10

java qq源代码 含有开发文档详细描述

此压缩包里含有开发文档的详细描述,源代码每一处都有详细的解释,对于想练练手的java程序员新手绝对是莫大的帮助

2010-01-31

空空如也

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

TA关注的人

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