自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

野生码农

方法大于努力

  • 博客(40)
  • 资源 (2)
  • 收藏
  • 关注

原创 回溯法解背包问题

<br />#include <stdio.h>#include <stdlib.h>#include <string.h>#define max 10int c[max] = {0,7,3,4,5};int v[max] = {0,42,12,40,25};int curv,bestv,curw,V;int use[max],bestuse[max];/*回溯 可以用全局变量!!!回溯 就是在隐士图上的深度优先遍历树而对全局变量的修改 在一次未到叶子

2010-08-31 17:39:00 900

原创 迷宫 hdu 1010 Tempter of the Bone

<br />http://acm.hdu.edu.cn/showproblem.php?pid=1010<br /> <br /> <br />//深入解析//1.求某给定时间以内能否找到出口//2.找到出口的最短时间//3.条件变为可以停留#include <stdio.h>#include <math.h>int si,sj; //记录起始点int di,dj; //记录门的位置char map[10][10];int dir[4][2] = {{-1,

2010-08-31 14:08:00 643

原创 pku 1159 Palindrome 使用滚动数组

<br />使用滚动数组<br /> <br />题目:<br />http://acm.pku.edu.cn/JudgeOnline/problem?id=1159<br /> <br />#include <stdio.h>#include <string.h>#define max 5002#define MAX(x,y) (x > y ? x : y)//滚动数组short g[2][max];char sa[max];char sb[max];int mai

2010-08-29 23:04:00 708

原创 pku 1080 Human Gene Functions

<br />题目:<br />http://acm.pku.edu.cn/JudgeOnline/problem?id=1080<br />#include <iostream>using namespace std;char a[105],b[105];int x[105],y[105];int score[200][200];int table[5][5] ={ 5,-1,-2,-1,-3, -1,5,-3,-2,-4, -2,-3,5,-2,-2, -1

2010-08-29 23:02:00 816

原创 pku 1631 Bridging signals nLogn效率的最长上升子序列

题目:http://acm.pku.edu.cn/JudgeOnline/problem?id=1631#include #include #define maxn 40001int num[maxn];//B[i]表示序列长度为i的所有序列的末尾元素的最小值int B[maxn];//opt[i]表示以第i个元素结尾的序列中的最长上升子序列的长度int opt[40001];int main(){ freopen("data.txt","r",stdin);

2010-08-29 22:59:00 685

原创 pku 3356 AGTC

<br />题目:<br />http://acm.pku.edu.cn/JudgeOnline/problem?id=3356<br /> <br />#include "stdio.h"//f(i,j)表示字符串A的前i个字符到字符串B的前j个字符匹配所需的最小改变步数int f[1002][1002];int min(int a,int b,int c){ int temp; temp = a <= b ? a : b; return

2010-08-29 22:57:00 688

原创 算法总结

<br />算法策略的总结 <br />策略是面向问题的,算法是面向实现的。<br />一、不同算法策略特点小结<br />1、贪心策略<br />    贪心策略一方面是求解过程比较简单的算法,另一方面它又是对能适用问题的条件要求最严格(即适用范围很小)的算法。<br />    贪心策略解决问题是按一定顺序,在只考虑当前局部信息的情况下,就做出一定的决策,最终得出问题的解。<br />    即:通过局部最优决策能得到全局最优决策<br />2、递推策略<br />   递推也是由当前问题的逐步解决从而

2010-08-28 21:03:00 1128

原创 分支界限法

<br />分支限界法<br />一、基本描述<br />    类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法。但在一般情况下,分支限界法与回溯法的求解目标不同。回溯法的求解目标是找出T中满足约束条件的所有解,而分支限界法的求<br />解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出使某一目标函数值达到极大或极小的解,即在某种意义下的最优解。<br />   (1)分支搜索算法<br />    所谓“分支”就是采用广度优先的策略,依次搜索E-结点的所有分支,也就是所有相邻结

2010-08-28 20:58:00 6280

原创 贪心法

<br />贪心算法贪心算法<br />一、基本概念:<br />     所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。<br />     贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会<br />影响以前的状态,只与当前状态有关。<br />    所以对所采用的贪心策略一定要仔细分析

2010-08-28 20:43:00 1272

原创 动态规划

动态规划算法一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,最后一个子问题就

2010-08-28 20:30:00 773

原创 分治法

<br />分治算法<br />一、基本概念<br />   在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以<br />简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)……<br />    任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。问题的规模越小,越容易直接求解,解题所需的

2010-08-28 20:05:00 927

原创 回溯法 求所有子集 所有排列

<br />#include <stdio.h>#include <memory>int a[5];void f(int i,int n,int k){ //构造1--n的一个子集,对于1--n,每一个数字只有2种状态,放或者不放 //当前已经处理了前i - 1个元素,现在处理第i个元素 //这一个子集目前有k - 1个元素,新加入的元素放在第k个位置 if(i > n){ printf("{ "); for(int j = 1;j <= k - 1;j++)

2010-08-28 19:38:00 1238

原创 回溯法

回溯法1、概念      回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。   回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。     许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。2、基本思想   在包含问题的所有解的解空间树中,按照深度

2010-08-28 19:36:00 1055

原创 多重背包模版

#define max_n 101#define max_m 100001#define MAX(x,y) (x > y ? x : y)int c[max_n];int w[max_n];int n[max_n];int f[max_m];int V;void ZeroOnePack(int c,int w){ for(int v = V;v >= c;v--) f[v] = MAX(f[v],f[v - c] + w);}void Compl

2010-08-27 22:57:00 751

原创 入门DP pku 1163 The Triangle

题目:http://acm.pku.edu.cn/JudgeOnline/problem?id=1163题目简单,主要是在递归的时候实现了记忆功能.而dp的实现是很容易的.重点是这2者的联系.逆向关系#include #include #define max 101#define MAX(x,y) (x > y ? x : y)int tri[max][max];int sum[max][max];int f(int i,int j,int n){ if(

2010-08-27 01:02:00 733

原创 多重背包 pku 1276 Cash Machine

<br />题目<br />http://acm.pku.edu.cn/JudgeOnline/problem?id=1276<br /> <br />#include <stdio.h>#include <memory>#define max_n 200#define max_cash 1000001#define MAX(x,y) ((x) > (y) ? (x) : (y))int c[max_n];int f[max_cash];int k;int c

2010-08-26 20:54:00 755

原创 典型地图搜索 pku 2488 A Knight's Journey

<br />题目:<br />http://acm.pku.edu.cn/JudgeOnline/problem?id=2488<br /> <br />#include <stdio.h>#include <memory>#define max 27struct Step{ char x; int y;}steps[max * max];//int dir[8][2] = {{-2,-1},{-2,1},{2,-1},{2,1},{-1,-2},{-1,2},{1,

2010-08-26 01:02:00 627

原创 n皇后问题

<br />#include <stdio.h><br />#include <memory><br />#define max_n 20<br />int map[max_n][max_n];<br />int col[max_n];<br />int a[2 * max_n - 1],b[2 * max_n - 1];<br />int count = 0;<br />void Trial(int i,int n){<br /> //递归求解n皇后问题的一组解<br /> //在进入本函数时,在n *

2010-08-25 21:17:00 588

原创 搜索剪枝回溯经典题目 pku 1011 sticks

<br />题目:<br />http://acm.pku.edu.cn/JudgeOnline/problem?id=1011<br /> <br /> <br /> #include<stdio.h>#include<algorithm>#define max 65int sticks[max];bool used[max];int M;intcmp(constvoid*e1,constvoid*e2){return(*(int*)e1)-(*(int*)e2)>0?-1:1;}boolf(int k,

2010-08-25 21:13:00 1249

原创 二分图最大匹配 最大增广路径 递归法

<br />二分图的最大匹配<br />增广路径法 递归实现<br /> <br />//分别定义左右最大元素数量<br />#define Left_Max 101<br />#define Right_Max 301<br /><br />//匹配标志!!!!!在DFS遍历中寻找增广路径的时候用,每次在寻找增广路径的时候都要刷新<br />bool visit[Right_Max];<br />//记录对应在左边集合中的元素!!!这个是不要的<br />int link[Right_Max];<br /

2010-08-23 22:53:00 2586

原创 二分图最大匹配 增广路径法实现 pku 1469 COURSES

<br />注释在代码里写的很清楚了<br />题目:<br />http://acm.pku.edu.cn/JudgeOnline/problem?id=1469<br /> <br />上代码<br /> #include<stdio.h>#include<memory.h>//分别定义左右最大元素数量#define Left_Max 101#define Right_Max 301//匹配标志!!!!!在DFS遍历中寻找增广路径的时候用,每次在寻找增广路径的时候都要刷新bool visit[Right

2010-08-23 22:48:00 1810

原创 二分图最大匹配 增广路径法实现 pku 1469 COURSES

<br />注释在代码里写的很清楚了<br />题目:<br />http://acm.pku.edu.cn/JudgeOnline/problem?id=1469<br /> <br />上代码<br /> #include<stdio.h>#include<memory.h>//分别定义左右最大元素数量#define Left_Max 101#define Right_Max 301//匹配标志!!!!!在DFS遍历中寻找增广路径的时候用,每次在寻找增广路径的时候都要刷新bool visit[Right

2010-08-23 22:47:00 875

原创 二分图最大匹配 增广路径法实现 pku 1469 COURSES

<br />注释在代码里写的很清楚了<br />题目:<br />http://acm.pku.edu.cn/JudgeOnline/problem?id=1469<br /> <br />上代码<br /> #include<stdio.h>#include<memory.h>//分别定义左右最大元素数量#define Left_Max 101#define Right_Max 301//匹配标志!!!!!在DFS遍历中寻找增广路径的时候用,每次在寻找增广路径的时候都要刷新bool visit[Right

2010-08-23 22:43:00 872

原创 最大流的最短增益路径模版

<br />#define MAX 201<br />#define Inf 1<<20<br />#defineMIN(x,y)((x)<(y)?(x):(y))<br /> <br /> <br />//-------------------------------------------------------<br />//总结:利用队列进行广度探索,标记每个点的父结点和可再容纳的最大流量,<br />//探测到汇点时,汇点的可再容纳流量即是增益的流量,<br />//反复进行,直到不能探测到汇点为

2010-08-23 19:35:00 2369

原创 最大流问题 pku 1273 Drainage Ditches

<br />采用最短增益路径算法<br />题目链接:<br />http://acm.pku.edu.cn/JudgeOnline/problem?id=1273<br /> <br />代码注释贴上<br /> <br /> #include<stdio.h>#include<memory.h>#define MAX 201#define Inf 1<<20#defineMIN(x,y)((x)<(y)?(x):(y))int mat[MAX][MAX];int flow[MAX][MAX];//---

2010-08-23 18:01:00 1215

原创 完全最短路径问题Floyd算法 pku 1125 Stockbroker Grapevine

<br />题目链接:<br />http://acm.pku.edu.cn/JudgeOnline/problem?id=1125<br /> <br />理解题意最关键的一句话:<br />Your task will be to write a program that tells you which stockbroker to choose as your <br />starting point for the rumour, as well as the time it will take f

2010-08-22 18:01:00 641

原创 Dijkstra算法 + 枚举 pku 1062 昂贵的聘礼

题目:http://acm.pku.edu.cn/JudgeOnline/problem?id=1062//贪心(Dijkstra) + 枚举#include #include #define MAX_N 105#define INF 1#define Min(x,y) ((x) int arcs[MAX_N][MAX_N];int dist[MAX_N];int level[MAX_N];//访问标志,等级限制不能访问或者已经访问过的节点标记为1int visit[MAX_N];int M,N;//vis

2010-08-22 15:33:00 578

原创 Dijkstra算法的简单变形 pku 2253 Frogger

<br />题目链接:<br />http://acm.pku.edu.cn/JudgeOnline/problem?id=2253<br /> <br /> <br /> <br />#include <stdio.h><br />#include <cmath><br />#include <memory.h><br />#define MAX_STONE 205<br />#define INFINITE 1<<20<br />#define Max(x,y) ((x) > (y) ? (x) : (

2010-08-22 09:23:00 774

原创 并查集的简单使用 pku 1611 The Suspects

<br />题目链接:<br />http://acm.pku.edu.cn/JudgeOnline/problem?id=1611<br /> <br />#include <stdio.h>#define MAX_STUDENT 30000int parent[MAX_STUDENT];int num[MAX_STUDENT];void make_set(int x){ parent[x] = x; num[x] = 1;}int find_set(int

2010-08-21 17:25:00 661

原创 典型最小生成树 pku 1258 Agri-Net

<br />题目链接:<br />http://acm.pku.edu.cn/JudgeOnline/problem?id=1258<br /> <br /> <br /> <br />#include <stdio.h>#include <algorithm>#define MAX_V 100//并查集int parent[MAX_V];int rank[MAX_V];//生成一个单元素集合void make_set(int x){ parent[x] = x;

2010-08-21 15:35:00 661

原创 pku 2485 Highways 典型最小生成树

<br />题目连接<br />http://acm.pku.edu.cn/JudgeOnline/problem?id=2485<br />典型最小生成树<br /> <br /> <br />#include <stdio.h><br />#define MAX_V 501<br />int arc[MAX_V][MAX_V];<br />int N;<br />struct CloseEdge{<br /> int adjvex;<br /> int lowcost;<br />}closedge[M

2010-08-21 10:34:00 714

原创 ACM常用算法与对应习题

<br />ACM常用算法及其相应的练习题2010年07月21日 星期三 01:56OJ上的一些水题(可用来练手和增加自信) <br />(poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094)<br />初期: <br />一.基本算法: <br />     (1)枚举. (poj1753,poj2965) <br />     (2)贪心(poj1328,poj2109,poj2586) <br />     (

2010-08-20 15:37:00 1068

原创 并查集

<br />并查集:(union-find sets)是一种简单的用途广泛的集合. 并查集是若干个不相交集合,能够实现较快的合并和判断元素所在集合的操作,应用很多,如其求无向图的连通分量个数、最小公共祖先、带<br />限制的作业排序,还有最完美的应用:实现Kruskar算法求最小生成树。其实,这一部分《算法导论》讲的很精炼。 <br />       一般采取树形结构来存储并查集,在合并操作时可以利用树的节点数(加权规则)或者利用一个rank数组来存储集合的深度下界--启发式函数,在查找操作时进行路径压缩

2010-08-20 15:30:00 901

原创 Trie Tree

<br />#include<iostream><br />#include<cstring><br />#define N 300 //有N个单词<br />#define M 1000000//有M次查询<br />#define kind 26//26个英文字母<br />using namespace std;<br />struct Treenode<br />{<br />    int count;<br />    Treenode *next[kind];<br />    Treenod

2010-08-20 15:07:00 562

原创 大数加法

<br />string plus(string a,string b)   //参数是:字串下标的低位记录数值的高位<br />{<br /> string ans;<br /> int i,up=0;       //up是进位值<br /> if(a.size()>b.size())    //用0补充较短的字串<br />  b=string(a.size()-b.size(),'0')+b;<br /> else if(a.size()<b.size())<br />  a=string(b.si

2010-08-19 21:12:00 473

原创 pku 2192 Zipper

<br />题目链接:<br />http://acm.pku.edu.cn/JudgeOnline/problem?id=2192<br /> <br />采用动态规划的方法,类似LCS<br />f(i,j)表示是s1前i个字符,s2前j个字符能否组成s3前i + j个字符<br />f(0,0) = 0;<br />f(i,j) = (f(i - 1,j) && s1[i - 1] == s3[i + j - 1] && i >= 1) || f(i,j - 1) && s2[j - 1] == s3

2010-08-19 21:06:00 761

原创 pku 2362 Square

<br /> <br />题目连接<br />http://acm.pku.edu.cn/JudgeOnline/problem?id=2362<br /> <br /> <br />#include <iostream><br />#include <algorithm><br />using namespace std;<br /><br />int N,M;<br />int edgeLen,sum;<br />bool bfind;<br />int sticks[21],visited[21];<

2010-08-18 23:30:00 551

原创 pku 2479

http://acm.pku.edu.cn/JudgeOnline/problem?id=2479思路:基础: 最大子段和问题给定N个整数(可能为负)组成的序列a1, a2, a3, ..., aN,求子段ai, a(i+1), ... , aj的和的最大值非常典型的动态规划,状态迁移方程:      f(i) = max(ai, f[i-1]+ai), f(i)表示以ai结尾的最大子段和据此我们可以得到O(n)的求解算法PKU 2479与2593这两题其实是同一个问题(买一送一),都是上述最大子段和问题的

2010-08-13 10:19:00 746

原创 POJ 1088 比较有意思的动态规划

<br />注意2种方法的差别,递归的使用<br />#include<iostream>using namespace std;int r,c;int xd[101][101];int len[101][101];//上下左右int pos[4][2] = {{-1,0},{1,0},{0,-1},{0,1}};bool ok(int i,int j){ if(1 <= i && i <= r && 1 <= j && j <= c) return true;

2010-08-13 00:54:00 688

原创 背包九讲

<br />P01: 01背包问题<br />题目<br />有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。<br />基本思路<br />这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。<br />用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:<br />f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}<br />这

2010-08-09 23:10:00 674

编程精粹,写出高健壮性的代码

编程精粹,微软,金山,代码的健壮性。从业余爱好者到专业人员的转变.

2011-03-19

操作系统先来先服务调度和段进程优先调度

操作系统的上机实验,自己写的,很有参考价值,你们多下载下载,我多积攒点分数...

2010-05-17

空空如也

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

TA关注的人

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