算法
文章平均质量分 71
GeekFans
一个相信代码能改变世界的程序员。
展开
-
01背包问题
参考自:http://hi.baidu.com/acmgood/blog/item/53ca7237aaab32d5a3cc2bb4.html题目有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][v]表示前i件原创 2012-06-23 23:25:17 · 805 阅读 · 1 评论 -
堆排序算法实现
堆用数组来实现,但是其中元素有顺序,满足最大(小)堆的性质,如a[i]>a[i+1]&&a[i]>a[i+2],堆排序的思想是对于一个无序的数组,首先建堆,然后将第一个元素与最后一个元素交换位置,这样因为第一个元素是最大(小)值,就可以取出来了,再对其余N-1个元素进行堆得整理,代价为logn,然后再次取出第一个元素,以此类推,总的排序代价为O(N*logN)。注意建堆的代价为O(N)。原创 2012-09-01 16:38:49 · 852 阅读 · 0 评论 -
字符串复制算法简单实现
如题。很多情况下面试时容易考这个问题。#include using namespace std;void strCopy(char *a, char *b);int main(){ char a[100], b[100]; cout << "Input a string :"; scanf("%s", a); cout<<a<<endl;原创 2012-09-02 16:01:36 · 1522 阅读 · 0 评论 -
如何在字符串里查找第一个不重复的字母,即只出现一次的最靠前的字母
我在写这个程序时突然想起一个问题,就是C语言里给int一维数组初始化赋值的问题,比如我写:int index[11]={0}; 那么此时数组中所有的元素初始化值均为0;但是我写:int index[11]={-1};此时我以为所有元素的值均为-1了,其实不是这样的,当{}中的值的个数小于数组元素个数时,只有数组前面对应的元素被赋值了,而后面多余的元素被默认初始化为0了,所以这句话执行后,只原创 2012-09-03 10:00:08 · 5851 阅读 · 2 评论 -
编程之美初赛第一场
题目3 : 活动中心时间限制:12000ms单点时限:6000ms内存限制:256MB描述A市是一个高度规划的城市,但是科技高端发达的地方,居民们也不能忘记运动和锻炼,因此城市规划局在设计A市的时候也要考虑为居民们建造一个活动中心,方便居住在A市的居民们能随时开展运动,锻炼强健的身心。城市规划局希望活动中心的位置满足以下条件:1.原创 2014-04-20 00:07:54 · 1960 阅读 · 0 评论 -
输入一个英文句子,翻转句子中单词的顺序,单词内字符顺序不变
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student. a am I”。处理方法是首先将整个句子翻转,然后再将其中的每个单词翻转。代码如下: #include using namespace std;void myReverse原创 2012-09-03 10:04:38 · 13251 阅读 · 5 评论 -
算法学习之---蓄水池抽样问题
问题:如何在无限大的数据流中随机选取K个数据,保证当前遍历过的i个元素中每一个元素被选中的概率均为 k/i?从而对于n个元素,每个元素被选中的概率均为 k/n。解:对于前k个元素,我们直接选中放入一个虚拟的蓄水池中,对于第 k+1 个元素,我们用 k/(k+1) 的概率选中它,一旦选中了,就随机替换掉蓄水池中的某一个元素,这样前 k 个被选中的元素在第 k+1 个元素到来时依然被选中的概率即为原创 2014-09-17 22:03:16 · 1355 阅读 · 0 评论