![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 78
young1024
这个作者很懒,什么都没留下…
展开
-
读《算法竞赛入门经典》 7.3子集生成
7.31 增量构造法void print_subset1(int n,int *A,int cur) //增量构造法{ for(int i = 0;i < cur;i++) printf("%d ",A[i]); printf("\n"); //确定当前元素最小可能值 int s = cur ? A[cur-1]+1 : 0; //当第一次调用,cur为0,s赋值0 f原创 2013-03-07 23:53:28 · 1057 阅读 · 0 评论 -
hustoj 找出子串
题目如下:题目描述给定一个字符串s ,求出一个子串t,满足如下性质:1. t是s的一个前缀。2. t是s的一个后缀。3. t出现在s的中间(并非前缀和后缀)。例如:字符串s为fixprefixsuffix,t可以是fix。字符串s为aaa,t可以是aa。输入输入包括多组数据,每组数据为一行,每行有一个字符串s,其长度不超过10^6(一百万)。输出每组原创 2014-10-02 15:00:14 · 413 阅读 · 0 评论 -
线段树初级——《操作格子》
先贴上题目:问题描述有n个格子,从左到右放成一排,编号为1-n。共有m次操作,有3种操作类型:1.修改一个格子的权值,2.求连续一段格子权值和,3.求连续一段格子的最大值。对于每个2、3操作输出你所求出的结果。输入格式第一行2个整数n,m。接下来一行n个整数表示n个格子的初始权值。接下来m行,每行3个整数p,x,y,p表示操作类型,p=1时表示修改格子x的权值为y,p原创 2014-03-18 23:33:58 · 508 阅读 · 0 评论 -
POJ试题分类
POJ试题分类是在百度上偶然获得的,感觉这个分类对菜鸟很有用处,故复制之。另外看到 優YoU 的博客 http://blog.csdn.net/lyy289065406/article/details/6642573 上面有他的解题报告,对我帮助很大,非常感谢大神的分享。我也决心像大神一样,记录自己对于每一道的思路和方法,加深自己的理解。an AC a day, keeps转载 2013-10-07 20:30:28 · 629 阅读 · 0 评论 -
POJ 1014 -- Dividing
题意:有6种物品,价值分别为1,2,3,4,5,6。数量分别为n1,n2,n3,n4,n5,n6(由输入决定)。请你判断能否把这些物品分成两份,使两份的价值相等。输入为n1~n6,输出能否均分,当输入0 0 0 0 0 0 结束程序。Sample Input1 0 1 2 0 0 1 0 0 0 1 1 0 0 0 0 0 0 Sample OutputCollec原创 2013-10-07 21:02:00 · 576 阅读 · 0 评论 -
POJ 1798 Truck Histroy (MST)
题意晦涩难懂,参考http://blog.csdn.net/lyy289065406/article/details/6645974使用Prim算法:#include#include#includeusing namespace std;#define INF 0x7fffffffconst int MAX = 2001;int map[MAX][MAX]; //邻接矩原创 2013-06-12 21:19:38 · 503 阅读 · 0 评论 -
最小生成树MST POJ-2485
HighwaysTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 18191 Accepted: 8455DescriptionThe island nation of Flatopia is perfectly flat. Unfortunately, Fla原创 2013-06-12 20:36:42 · 445 阅读 · 0 评论 -
20130421.5 特殊排序
本问题中,你将分析一个特殊的排序算法。该算法对n个不相同整数的形成的序列,通过不断交换两个相邻元素,直至形成升序排列。对于输入序列9 1 0 5 4Ultra-QuickSort的输出是0 1 4 5 9你的任务是:对于给出的一个整数序列,计算Ultra-QuickSort需要执行多少次交换操作。输入输入包括多个测试用例。每一个测试用例以单个整数n包原创 2013-04-23 01:07:35 · 392 阅读 · 0 评论 -
20130421.4 倒水问题(BFS)
【编程题】给你两个烧杯,其容积分别是A升和B升。允许进行下列操作:1.FILL(i) 从水管接水将烧杯i灌满((1 ≤ i ≤ 2)2.DROP(i) 将第i个烧杯倒空3.POUR(i,j) 将烧杯i的水倒进烧杯j;并且倒完后要么烧杯j是满的(烧杯i中也许有剩水),要么烧杯i是空的(此时烧杯i的水应该全部倒进烧杯j)。写一个程原创 2013-04-23 00:46:09 · 726 阅读 · 0 评论 -
3个递推和递归题目:紧密数、排队问题、表达式计数
1.紧密数给出一个数字字符集{0, 1, ... , k}, 0 输入2个整数k与n,1 样例输入 样例输出4 1 100.000002 5 40.740743 5 17.382818 7原创 2013-04-06 13:51:25 · 1267 阅读 · 0 评论 -
归并排序和快速排序
先把代码贴上int merge_sort(int *A,int x,int y,int *T) //[x,y){ int m,l,r,i,count = 0; if(y - x == 1) return 0; m = x + (y-x)/2; count += merge_sort(A,x,m,T); //左半区间排序 count += merge_sort(A,m,y,T); /原创 2013-03-18 23:23:31 · 415 阅读 · 0 评论 -
《算法竞赛入门经典》 7.5 倒水问题
倒水问题:设大、中、小3个杯子的容量分别为a,b,c,最初只有大杯子装满水,其他两个杯子为空。由于没有刻度,用杯子x给杯子y倒水时必须一直持续到把杯子y倒满或者把杯子x倒空,而且不能中途终止。最少需要多少步才能让某一个杯子中的水有x升呢?打印出来每步操作后各个杯子的水量(0分析:题中问最少多少步,宽度优先搜索(BFS)可以解决这种最短路程或者步数的问题。把3个杯子的状态想象成一原创 2013-03-16 22:02:49 · 1526 阅读 · 0 评论 -
《算法竞赛入门经典》7.5 埃及分数
在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数。 如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的。 对于一个分数a/b,表示方法有很多种,但是哪种最好呢? 首先,加数少的比加数多的好,其次,加数个数相同的,最小的分数越大越好。 如: 19/45=1/3 + 1/12 + 1/180 19/4原创 2013-03-14 23:05:09 · 1415 阅读 · 0 评论 -
KMP算法
BF算法:int BFMatch(char* s,char* p) //BF算法,匹配成功返回s中起始下标;匹配失败返回-1{ int lenS = strlen(s); int lenP = strlen(p); int i,j; i = 0; //i为s的下标 while(i < lenS) { j = 0; //j为p的下标 while(s[i] == p[j]原创 2014-09-27 15:53:36 · 479 阅读 · 0 评论