
算法
文章平均质量分 82
lybacm
这个作者很懒,什么都没留下…
展开
-
插入排序的另一种写法
一般的插入排序方法想必大家都写过,基础好的几分钟就可以写出来了,基础差一点的调一调也就出来了。下面是一般通用的插入排序算法:#include<iostream>using namespace std;const int SIZE = 10;int arrs[SIZE];//打印排序后的数组void printArr(){ for(int i...2010-12-14 01:39:23 · 164 阅读 · 0 评论 -
STL在ACM中的应用
STL 提供三种类型的组件:容器、迭代器和算法,它们都支持泛型程序设计标准。在ACM中充分利用STL可以大大的简化程序,提高解题效率。1、容器主要有两类:顺序容器和关联容器。顺序容器(vector/list/deque/string)等是一系列元素的有序集合。关联容器(set/multiset/map/multimap)包含查找元素的键值。2、迭代器的作用是遍历容器。3、STL算法库包...原创 2011-04-09 01:41:44 · 222 阅读 · 0 评论 -
完全背包问题
看这篇日志之前,请先阅读我的上一篇日志,关于0/1背包的问题。完全背包问题的描述:有N 种物品和一个容量为V 的背包,每种物品都有无限件可用。第i 种物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。可能大家已经看出来了,完全背包问题其实就是在0/1背包的问题的基础上加了一个条件:每种物品都有无限件可用。这个问...原创 2011-03-29 23:01:09 · 196 阅读 · 0 评论 -
0/1背包问题的动态规划详解
动态规划是用空间换时间的一种方法的抽象。其关键是发现子问题和记录其结果。然后利用这些结果减轻运算量。比如01背包问题。/* 一个旅行者有一个最多能用M公斤的背包,现在有N件物品,它们的重量分别是W1,W2,...,Wn,它们的价值分别为P1,P2,...,Pn.若每种物品只有一件求旅行者能获得最大总价值。输入格式:M,NW1,P1W2,P2......输出格式: X */因为背包最大容...原创 2011-03-29 22:57:24 · 141 阅读 · 0 评论 -
最长上升子序列问题的几种解法
拿POJ 2533来说。Sample Input71 7 3 5 9 4 8Sample Output4从输入的序列中找出最长的上升子序列(LIS)。这题一看,是一道典型的DP问题(就是动态规划),可以用dfs,深度优先遍历来解,如下代码:#include<iostream>#include<stack>using namespace std...原创 2011-03-29 22:55:53 · 152 阅读 · 0 评论 -
一个简单的字符组合算法
有个朋友问了我这个问题:把几个数组里面的元素任意组合 并输出所有组合。C++中是有相关的函数,我们自己来实现一下吧。当然大家一开始就会想到用递归,下面就给出简单的源码。 #include <iostream>using namespace std;char arr[100][100];void work(int row, int col, char*...原创 2011-07-27 13:18:28 · 246 阅读 · 0 评论 -
北大ACM题库习题分类与简介
acm.pku.edu.cn转自:http://www.stubc.com/thread-154-1-8.html1、 排序1423, 1694, 1723, 1727, 1763, 1788, 1828, 1838, 1840, 2201, 2376, 2377, 2380, 1318, 1877, 1928, 1971, 1974, 1990, 2001, 2002, 2092, 2379...原创 2010-12-06 13:57:29 · 162 阅读 · 0 评论 -
POJ1753-位操作
Flip GameTime Limit: 1000MSMemory Limit: 65536KTotal Submissions: 11333Accepted: 4818DescriptionFlip game is played on a rectangular 4x4 field with two-sided piec...原创 2010-11-03 01:30:50 · 128 阅读 · 0 评论 -
各种排序算法的实现及其比较
排序算法是笔试和面试中最喜欢考到的内容,今晚花了好几个小时的时间把之前接触过的排序算法都重新实现了一遍。 主要是作为复习用。当然也希望能够给大家帮上点忙。对各种排序算法比较熟悉的朋友可以直接跳过。 常用的内部排序算法主要分为五类:插入、交换、选择、归并、基数排序。文章的最后可能还会稍微分析一下外部排序。。。内/外部排序的区别就是 外部排序指的是大文件的排序,即待排序的记录存...2011-05-13 22:42:20 · 327 阅读 · 0 评论 -
用BFS找最短路,并打印路径
我想大部分读者都用Floyd或者Dijstra算法,甚至dfs算过最短路吧。其实BFS也可以计算最短路。(补充:本文只针对无权图,有权图很难用BFS)当我们用BFS找端对端最短路时,从出发点开始,第一次遍历到终点时过的那条路径就是最短的路径。(读者可以思考一下为什么!)下面就用邻接表来实现一下BFS最短路,并把路径打出来。 #include<iostream>#...2010-12-23 02:19:16 · 415 阅读 · 0 评论 -
连连看全局消除算法
好久没写技术博客了。Iteye依然这么亲切!内存分析了连连看内部数据,找出了方块摆放的那一段数据,用程序把它读出来,放到一个二维数组里面,构成一个矩阵。这些数据就做为这个算法的数据基础。这是今天突发奇想,写出来的代码,结合内存读出来的数据,可以瞬间把连连看里面的方块消得个精光。开局: 一阵电闪雷鸣,瞬间之后,就变成下面这样子了: 但本篇文章不讲这个外挂程序。只讲...原创 2012-03-08 01:48:25 · 1031 阅读 · 0 评论