- 博客(33)
- 资源 (9)
- 收藏
- 关注
转载 LRU算法
原文来自 http://www.hawstein.com/posts/lru-cache-impl.htmlLRU算法的实现LRU的典型实现是hash map + doubly linked list, 双向链表用于存储数据结点,并且它是按照结点最近被使用的时间来存储的。 如果一个结点被访问了, 我们有理由哈希表的作用是什么呢?如果没有哈希表,我们要访问某个结点,就需要顺序地一个个找,
2015-05-03 00:46:51
562
原创 铁路栈问题(HWoj)
本题目考察对数据结构中的栈、队列的知识的了解,我们可以把出站的顺序看做队列,进站可以看做压入站#include #include #include using namespace std;int JudgeTrainSequence (int maxNum, char *pOutSeq){ queue Q;//出站的队列 stack S; for(int i=0;i<maxNu
2015-04-04 19:31:26
1507
原创 正数相减少
我开始用的代码:/****************************************************************************** Copyright (C), 2001-2011, Huawei Tech. Co., Ltd. **********************************************************
2015-02-02 21:21:16
941
原创 字符串的处理常用sprintf
这道题目关于字符串的题目,当时在处理保留小数点后2位卡住了,在c++中cout 我想用stringstream stream 进行保存,然后。。。其实在c中用sprintf(out,"%s %.2f",name,avg);第二个教训要看好题目对数据转换问题上 用sprintf sscanf好处理float sum(int score[],int n){ float d=
2015-01-31 22:54:27
1009
原创 进程间通信
至于linux进程间通信(IPC)(http://www.ibm.com/developerworks/cn/linux/l-ipc/)1 管道(pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信2 信号:信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除
2014-07-05 18:15:48
711
原创 枚举法的案列
题目:1~9的9个数字,每个数字只能出现一次,要求这样的一个9位的整数:其第一位能被1整除,前2位能被2整除,前3位能被3整除。。。。。。依次内推,前9位能被9整除我开始想到了全排列的代码如下:
2014-03-29 14:33:33
1087
原创 从N个数总随机选出M个数
来自编程珠玑问题:假设一组数0,1,2,3,.....N-1,随机选出M个不重复的数字开始0 被选择的概率为 M/N1被选择的概率为 M/N(如果0没有被选择的话) 或者 M-1/N(0被选择了)当到i 的时候被选择的概率为 剩余的数用r表示,要选择出的数用s,则其概率为 s/r开始的时候 r=N s=M if(rand()%r概率为s/r 当rand(
2014-03-23 16:19:24
1450
原创 编程珠玑 8.3分治法的错误 连续子向量的最大和
问题描述:问题输入是具有n个数的向量x,输出是输入向量的任何连续子向量的最大和要解决这个规模为n的问题,可递归的解决两个规模近似为n/2的子问题,然后对它们的答案进行合并以得到整个问题的答案假设数组A 【l......u】mid=(l+u)/2;A[l....mid] 最大的连续的最大值为 lmax 下标是从i_1.......j_1A[mid....u]最大的连续的最大值
2014-03-19 16:46:34
827
原创 众数问题
令E是整数x1,x2..xn。E中x的众数是x在E中出现的次数。如果某个数z的众数大于n/2,则它就是众数问题1:已知一数列,判断是否存在众数,若存在,则求出众数问题2:对已知的某个有n个元素的列表,找出所有出现超过n/4次的元素。算法设计应该做o(n)次比较对于问题1,如果规模比较小的话,用桶式排序,时间复杂度为o(n),对于大规模不太实用了。先排序时间复杂度o(n*lgn),排序后
2014-02-05 22:52:25
1364
原创 C++题目 代码
1)实现string toHex(int)把一个十进制转换成十六进制。(完全用算法实现) string toHex(int a){ int u_value=a>0?a:-a; char *value=new char[10]; value[9]='\0'; value[8]='H'; int position=7;
2014-01-25 20:16:17
1545
1
原创 andriod的数据存储
Android系统一共提供了四种数据存储方式。分别是:SharePreference、SQLite、Content Provider和FileSQLite的存储之前做了通讯录,其放在内存中。继承SQLiteOpenHelper创建数据库package com.example.contentproviderdemo;import android.content.Context;
2013-12-20 17:11:23
799
原创 序列比较
序列比较问题在生物中有很多的应用问题描述:把一个序列变成另一个序列的最少修改步数。用到动态规划令A=a1,a2,a3,....an ,B=b1,b2,.....bm是2个字符串,其中字符取自一个有限集合(如英语字母表)。我们想一一改变A的字符变把A变成B.改变有3种1)插入,把某个字符串插入到字符串2)删除,从字符串中删除某个字符3)替换,把字符串中的某个字符替换成另一字符
2013-12-10 12:02:31
1004
原创 哈夫曼树的构造
Huffman_encoding (s,f)input:s(字符串)和f(字频数组)output:T(S的哈夫曼树)begin:insert all characters into a heap H according to their frequncywhile H is not empty do if H contains only only character
2013-12-06 22:03:15
1061
原创 约瑟夫问题
如果对n-1个人,最后出列人的编号为k=f (n-1);则对n个人,第一个报m数的人出列后,重排列.当m % n = 0时,为1, ..., n-1–则 f(n) = k.否则,为m%n+1, ..., n, 1, m%n-1–如果 k ≤ n-m%n则,f(n) = m%n+k–如果 k > n-m%n则,f(n) = k - n + m%n.T(n)=T(n-1)+ Θ
2013-12-01 16:19:54
794
转载 开复老师的语录
人生在世的时间非常短,如果你总是不敢做想做的事情,那么一生过去了,你留下来的只有悔恨。我常常说追随我心,当然追随我心必须是要在负责、守信、守法的前提下。在这个前提下,冒一点风险也是值得的。虽然经历风险的日子会比较困难,但如果我不这样做,那蹉跎十年、二十年后,我可能会后悔终生。价值不是你拥有多少,而是你留下多少不要被信条所惑,盲从信条就是活在别人思考的结果里。不要让别
2013-11-28 18:22:32
1187
原创 动态规划解决N个数之和为K
问题:给定一个整数K和n个不同大小的商品,第i个物品的大小整数位ki ,寻找一个物品的子集,它们的和正好为为K ,或者确定不存在这样的子集用动态规划解决问题的时候,求出问题的一个解,而不是所有的解。如果求出所有的解,我目前想到的用回溯法解决,不过要指数之间的复杂度P(N,K)可以通过判断P(N-1,K)和P(N-1,K-kn)的解来判断,如果这两个子集都无解,则问题没有解。我们不仅要知道P
2013-11-27 17:13:21
6529
原创 建筑物的轮廓问题
问题描述:描述对于城市中几座建筑外形,给出这些建筑的二维轮廓。•关于输入输入的第一行是正整数 n(1接下来 n 行,每行三个正整数start end height,表示建筑的左边界、右边界和高度。•关于输出输出建筑群的轮廓,包含多行,从左到右输出建筑的边界:(U|D|R) lenU、D、R分别表示上、下、右,即建筑边界延伸的方向,len为正整数,表示边界在此方向上延伸的
2013-11-27 13:56:29
4064
转载 白话数字签名(1)——基本原理(新!)
转自:http://www.cnblogs.com/1-2-3/archive/2007/09/17/colloquialism-digital-certificate-part1.html摘要本系列通过通俗易懂的讲解,让您就像读小说一般,轻轻松松就能理解数字签名的基本原理和应用方法(即使您是一个并不精通计算机的企业老总,也能读懂本篇文章)。然后我们再逐步深入技术细节,最后将给出一个在
2013-11-11 10:11:45
997
转载 俞敏洪:像水一样积蓄自己的力量
每一条河流都有自己不同的生命曲线, 但是每一条河流都有自己的梦想—— 那就是奔向大海。 我们的生命, 有的时候会是泥沙。 你可能慢慢地就会像泥沙一样, 沉淀下去了。 一旦你沉淀下去了, 也许你不用再为了前进而努力了, 但是你却永远见不到阳光了。 所以我建议大家, 不管你现在的生命是怎么样的, 一定要有水的精神。 像水一样不断地积蓄自己的力量,
2013-11-10 23:22:18
2910
原创 两个链表的相交和含有环的单链表
本文参考了http://www.cppblog.com/humanchao/archive/2008/04/17/47357.aspx问题1:如何判断单链表有环2:如果有环,在哪里有环的开始点3 判断两个链表是否相交问题一:设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入环
2013-11-06 17:50:20
652
原创 多个for语句转为一个while语句
看到编程之美说,一个例子含有多个for语句,这样美吗?书上用一个while来控制的假设 有2个数组arr1[],arr2[],要打印出arr1[]和arr2[]组合的数,你肯定会用2for ,本文转为一个while,多个for也同样适用看代码如下:
2013-11-05 14:16:26
1189
原创 求满足条件的和
在博客http://blog.csdn.net/linyunzju/article/details/7720413中,问题:1. 快速找出一个数组中的两个数,让这两个数之和等于一个给定的值。2. 快速找出一个数组中的三个数,让这三个数之和等于一个给定的值。1. 解法:算法复杂度为O(nlogn)。先用快速排序对数组排序,让后用双指针(双索引)法对排序好的数组进行
2013-10-29 15:52:39
1229
原创 求前k个大的数据
问题描述:有很多个无序的数,我们姑且假定它们各不相同,如何选出其中最大的若干数?可能有人会说先排序后查找下就不ok了吗?其实如果是大数据的话,内存有限,这样排序是没法运行的,还有时间复杂度也挺高的我觉得下面2个算法挺好的算法一、回忆下快速排序,快排中的每一步,假设数组下标从start---->end,选个pivot element 主元,经过一次partition ,pivot ele
2013-10-25 14:54:22
803
原创 广度优先遍历的应用
// 广度遍历----连连看.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include using namespace std;#define UNBOUND 1234/**author:songzhengchaotime:2013/10/19funtion:连连看程序,找出从一个位置(x1,y1)到(x2,y2)
2013-10-19 20:52:53
1447
原创 机器故障检查
编程之美中P40解法三:如果A和B不同的话,那么这个异或值的二进制中某位为1,显然A和B中有且仅有一个数的相同位为1我们把所有的ID分为2类,一类在这位为1,另一类这位为0。那么对于这两类ID,每一类分别含有A和B中的一个。那么我们使用两个变量,在遍历列表时,分别计算这两类ID的异或和,即可得到A和B的值(太巧妙了)这样这两类中,每类有2份相同的数据和一个A或者B
2013-10-12 11:08:08
722
原创 非诚勿扰女嘉宾问题 回溯法
问题描述:非诚勿扰n个女嘉宾,有3套题目,要求自己和左右的女嘉宾的题目不同,有多少种分法用回溯法解决,下面给出回溯法的非递归和递归的形式的代码/*author:songzhengchaotime:2013/101/10*//*void fun(int i){ if(i>N) { for(int j=1;j<=N;j++) cout<<arr[j]<<" "
2013-10-10 09:33:30
1678
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人