算法
文章平均质量分 91
小熊不去实验室
体感互动攻城狮一枚,主要研究:体感互动设备,互动开发平台,开发互动项目,希望向各位大牛多多学习~
展开
-
计算机视觉、机器学习相关领域论文和源代码大集合
原文地址:[ZZ]计算机视觉、机器学习相关领域论文和源代码大集合作者:计算机视觉与模式注:下面有project网站的大部分都有paper和相应的code。Code一般是C/C++或者Matlab代码。最近一次更新:2013-1-29一、特征提取Feature Extraction: SIFT [1] [Demo program][SIFT L转载 2013-08-20 17:54:49 · 5598 阅读 · 3 评论 -
每日一题(22)——区间重合检测(二)(线段树)
一、问题:给定一个窗口区域和系统界面上的N个窗口,判断这个窗口区域是否被已有的窗口覆盖。 二、数据结构之线段树作者:Dong |可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址:http://dongxicheng.org/structure/segment-tree/1、概述线段树,也叫区间树,是一个完全二叉树,它在各个节点保存一条线段(即“子数组”原创 2012-12-06 00:38:20 · 3295 阅读 · 0 评论 -
字符串操作——面试题总结
摘录于下, 来源: http://rjwyr.blog.163.com/blog/static/112986400201153061911864/字符串操作 #include #include #include #include #include using namespace std;/*\1.翻转句子中的单词题目:输入一个英文句子,翻转转载 2012-11-06 21:03:28 · 2654 阅读 · 0 评论 -
每日一题(12)——计算Slim Span(并查集)
首先总结一下并查集:其中按秩合并分为:按树的深度和树的大小合并,效果都相同。 问题ID:POJ3522Slim SpanTime Limit: 5000MS Memory Limit: 65536KTotal Submissions: 5098 Accepted: 2671原创 2012-11-24 22:53:37 · 1594 阅读 · 0 评论 -
每日一题(4)——动态规划《Introduction to Algorithms》总结篇
概述同分治法一样动态规划是通过组合子问题的解而解决整个问题的动态规划的4个步骤:1.描述最优解结构;2.递归定义最优解的值;3.按自底向上方式计算最优解;4.由计算出的结果构造最优解;(1-3步是基础,第4步可以略去) 动态规划特点,包含重复子问题,可以用图结构保存中间结果,不用重复计算。 1.装配线调度(PS:这图太磕碜了,没办法,原来网页版的算法原创 2012-11-16 20:34:15 · 1596 阅读 · 0 评论 -
背包九讲
背包问题 它是在1978年由Merkel和Hellman提出的。它的主要思路是假定某人拥有大量物品,重量各不同。此人通过秘密地选择一部分物品并将它们放 到背包中来加密消息。背包中的物品中重量是公开的,所有可能的物品也是公开的,但背包中的物品是保密的。附加一定的限制条件,给出重量,而要列出可能的物 品,在计算上是不可实现的。背包问题是熟知的不可计算问题,背包体制以其加密,解密速度快而其人注目转载 2012-11-21 09:49:59 · 1066 阅读 · 0 评论 -
每日一题(18)——买书问题(动态规划)
一,问题 上柜的《哈利波特》平装本系列,一共有五卷。假设每一卷单独销售均需8欧元。如果读者一次购买不同的两卷,就可以扣除5%的费用,三卷则更多。假设具体折扣的情况如下: 本数 2 折扣 5% 本数 3 折扣 10% 本数 4 折扣 20% 本数原创 2012-11-29 13:47:12 · 1920 阅读 · 1 评论 -
每日一题(19)——数组分割(动态规划)
一、问题: 1. 有一个无序、元素个数为2n的正整数数组,要求:如何能把这个数组分割为两个子数组,子数组的元素个数不限,并使两个子数组之和最接近。 2. 有一个无序、元素个数为2n的正整数数组,要求:如何能把这个数组分割为元素个数为n的两个数组,并使两个子数组之和最接近。 input:22 3 3 6output:the count of num原创 2012-11-29 20:42:18 · 3691 阅读 · 0 评论 -
每日一题(6)——循环移位(Chen Jack am I)
题目: I am Jack Chen逆序输出为 Chen Jack am I 字符串处理 大众题方法1.其实是普通循环操作(即逆操作)的变形:循环移位(XY→YX)逆操作先内部逆序,再全部逆序。 #include #include using namespace std;string s = "I am Jack Chen";void swap(i原创 2012-11-19 20:14:10 · 1408 阅读 · 0 评论 -
每日一题(3)——打印螺旋矩阵(queue)
要求打印螺旋矩阵:输入边长,输出样式如下:总结规律:可以看出,旋转方向是:右,下,左,上;具体次数:右,下,;左左,上上,;右右右,下下下,;左左左左,上上上上……每两次输出次数(旋转半径)递增1有了这些规律,就可以总结使用了(PS:注意容器适配器queue的用法)#include #include #include using namespace st原创 2012-11-16 14:03:29 · 1321 阅读 · 0 评论 -
每日一题(2)——Maximum sum
问题ID POJ2479Maximum sumTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 28229 Accepted: 8626DescriptionGiven a set of n integers: A={a1, a2,..., an}, we原创 2012-11-15 16:00:55 · 1389 阅读 · 0 评论 -
算法之美——判断稳定排序
http://blog.csdn.net/abcjennifer/article/details/7286913/************************************************************************//* 稳定排序Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 3转载 2012-09-20 20:36:57 · 2048 阅读 · 0 评论 -
算法之美——位图排序
辉爷的高级数据结构开讲了,辉爷V5啊,今天辉爷讲的是位图排序。 问题描述:•输入–给出至多10,000,000个正整数的序列•特征:–每个数都小于10,000,000–数据不重复且 数据之间不存在关联关系•输出:增序输出序列•约束:–内存容量1MB–磁盘空间充足–运行时间至多几分钟---最好线性时间 解答:首先回顾下计数排序:•思原创 2012-09-20 16:12:15 · 8847 阅读 · 1 评论 -
每日一题(25)——多维数组的指针操作
《C++ Primer》:在C/C++中没有多维数组,只有元素是数组的数组。关于p+1,指针加1移动的距离:一个指针加1移动的距离是它指向的元素在内存中的大小。所以指向int的指针加1走过了4个字节;指向int[n]的指针加1走过了n*4个字节;以此类推。*p的类型是p所指向的元素的类型,所以*p+1是p所指向的元素(或元素的类型)加1之后的结果。数组名a是一个指针,这个指原创 2013-01-18 17:40:04 · 1376 阅读 · 0 评论 -
每日一题(27)——C++单例模式
1.简介: 单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。 单例模式有许多种实现方法,在原创 2013-01-20 10:45:56 · 1485 阅读 · 2 评论 -
每日一题(28)——拆分数字
题目:将N拆分成多个整数相加和的形式,求出所有的形式 思路:用递归实现:使用一个list保存前缀数字,输出前缀与当前数字 代码:#include #include using namespace std;//输出前缀数字void print_list(list::iterator iter1,list::iterator iter2){ for(lis原创 2013-01-20 19:45:57 · 1935 阅读 · 0 评论 -
C/C++ 笔试面试(2)——二分查找
Bentley在他的著作《Writing Correct Programs》中写道,90%的计算机专家不能在2小时内写出完全正确的二分搜索算法。难怪有人说,二分查找原理简单,甚至小学生都能明白。不过这查找算法好多专家都写不好。我自己尝试了一下,确实要第一次就完全写正确不容易.以下两份实现依次为迭代和递归版本的代码,二分查找的思想很多人都清楚,但是这里有一个细节就是要注意边界的选择。//原创 2013-05-08 10:30:36 · 3678 阅读 · 6 评论 -
算法之美——排序算法总结
各种排序算法的简单比较1.稳定性比较插入排序、冒泡排序、二叉树排序、二路归并排序及其他线形排序是稳定的选择排序(从代码看,有位置置换)、希尔排序、快速排序、堆排序是不稳定的2.时间复杂性比较插入排序、冒泡排序、选择排序的时间复杂性为O(n2)其它非线形排序的时间复杂性为O(nlog2n)线形排序的时间复杂性为O(n);3.辅助空间的比较线形排序、二路归并排序原创 2012-09-20 14:49:41 · 1614 阅读 · 0 评论 -
每日一题(7)——0-1背包问题(动态规划)
问题描述:一个小偷去偷金库(这个小偷比较NB~),带了一个能承重N的背包,金库里放了不同品质的金砖,以(重量,价值)形式给出,问小偷怎样拿,获利最大?输入:第一行:金砖数目, 背包承重能力;其他行:金砖重量, 金砖价值输出:带走金砖数目;带走最大价值;金砖序号input:3 50 10 6020 10030 120output:2220原创 2012-11-20 18:55:30 · 2223 阅读 · 4 评论 -
每日一题(21)——区间重合检测(一)(普通区间合并&并查集)
一、问题:给定一个源区间[x,y]和N个无序的目标区间[x1,y1] [x2,y2] ... [xn,yn],判断源区间[x,y]是不是在目标区间内。Input:620 25 0 1015 2040 4530 4050 60 20 22Output://解法1Sorted Region:0 1015 2020 25 30 40原创 2012-12-04 20:32:44 · 1737 阅读 · 0 评论 -
每日一题(16)——求子串最大积&最大和
求子串最大积 问题:给定一个长度为N的整数数组, 只允许用乘法, 不能用除法, 计算任意 (N-1)个数的组合乘积中最大的一组,并写出算法的时间复杂度。解法1.•我们把所有可能的(N-1)个数的组合找出来,分别计算它们的乘积,并比较大小。由于原创 2012-11-28 20:17:30 · 1695 阅读 · 0 评论 -
每日一题(26)——删除注释&&删除行号 C++
题目1:删除注释删除C++代码中的注释部分1. //Annotation2./*Annotation*/ 思路:通过char保存出现的第一个’/‘,判断第二个字符是否为'/'或'*'若为’//‘:则一直到该行末尾,即判断出现'\n'若为’/*‘:则每次后移一位,判断该位置是否为'/'&&前一位置是否为'*' 代码(代码中判断过多,容易绕晕+_+):#in原创 2013-01-19 20:50:14 · 2339 阅读 · 0 评论 -
每日一题(24)——统计文本中出现次数最多的K个词(Top K)
统计英文电子书中出现次数最多的K个单词。使用map和priority_queue实现,十分简洁有效。 1.使用map保存每种单词的数量;2.使用priority_queue保存最大的K个数(注意相当于小顶堆,使用">"操作符) priority_queue,vector>,greater>> queueK 代码:#include #include #i原创 2013-01-04 16:00:50 · 3999 阅读 · 0 评论 -
每日一题(23)——免费馅饼
HDU1176:免费馅饼Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 15875 Accepted Submission(s): 5270Problem Description都说天上不会掉馅饼,但有一天game原创 2012-12-24 21:51:36 · 1327 阅读 · 0 评论 -
每日一题(8)——二进制中1的个数
方法1:经牛人发现n &= (n – 1)能清除n的最右边的1,来自微软的一道面试题:计算返回值 #include #include using namespace std;int fun(int n){ int count=0; while (n) { count++; n=n&(n-1); } return count;}原创 2012-11-22 09:39:53 · 1323 阅读 · 0 评论 -
每日一题(9)——Huffman编码(贪心)
哈夫曼编码是典型的贪心问题,不断地通过局部最优,最终计算全局最优结果。 1951年,霍夫曼和他在MIT信息论的同学需要选择是完成学期报告还是期末考试。导师Robert M. Fano给他们的学期报告的题目是,查找最有效的二进制编码。由于无法证明哪个已有编码是最有效的,霍夫曼放弃对已有编码的研究,转向新的探索,最终发现了基于有序频率二叉树编码的想法,并很快证明了这个方法是最有效的。由原创 2012-11-22 16:18:25 · 2861 阅读 · 0 评论 -
每日一题(14)——找到符合要求的整数
问题描述:任意给定一个正整数N,求一个最小的整数M(M>1),使得M*N的十进制结果只含有1和0;问题解答:1.穷举法for( M=2; ; M++){if ( hasOnlyZeroAndOne(M*N)) { cout; break;}}一旦N较大,比如N=99,M=1122334455667789,M*N=111,111,111,111,111 2原创 2012-11-26 23:34:23 · 1227 阅读 · 0 评论 -
算法之美——浙大计算机研究生复试上机考试-2009年
XXX定律[cpp] view plaincopy#include "iostream" using namespace std; int main() { int n; while (cin>>n&&n!=0) { int cnt=0;转载 2012-09-05 11:25:05 · 1601 阅读 · 0 评论 -
算法之美——位操作
今天看到有人提问一道位操作的笔试题,NB的大笨狼解答了,有收获,在此转载大笨狼的blog,方便大家共同学习。问题:是今天一家公司的笔试题,程序填空,没想出来C/C++ codeint get(uint32 num){ num = (num & 0x55555555) + ((num >> 1) & 0x55555555); num = (num转载 2012-10-09 17:01:01 · 1985 阅读 · 0 评论 -
算法之美——博弈论 + 按位异或
Matches GameTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 3934 Accepted: 2215DescriptionHere is a simple game. In this game, there are转载 2012-09-01 17:10:36 · 1458 阅读 · 0 评论 -
结构之美——字典树
辉爷:Trie树的实现v_JULY_v:从Trie树(字典树)谈到后缀树(10.28修订) 应用题目:http://acm.hdu.edu.cn/showproblem.php?pid=1251建立字典树,求以……为前缀的单词个数 统计难题Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535原创 2012-09-06 21:37:09 · 1538 阅读 · 0 评论 -
算法之美——循环移位(XY→YX)逆操作
题目要求:将字符串str进行循环移位,要求算法空间复杂度O(1),时间复杂度O(n)思路:假设str需要循环移位k位,则将其分为前后两部分,分别长k和n-k,称AB则循环移位的过程即为XY->YX. 可由XT即转置完成,(XTYT)T=(YT)T(XT)T=YXabcdefgh→(abcd)(efgh)→(dcba)(hgfe)→(dcbahgfe)→(efghabcd)实原创 2012-09-07 14:49:59 · 2438 阅读 · 0 评论 -
算法之美——求两直线交点(三维叉积)——求四边形面积(二维叉积)
一般方程法:直线的一般方程为F(x) = ax + by + c = 0。既然我们已经知道直线的两个点,假设为(x0,y0), (x1, y1),那么可以得到a = y0 – y1, b = x1 – x0, c = x0y1 – x1y0。因此我们可以将两条直线分别表示为F0(x) = a0*x + b0*y + c0 = 0, F1(x) = a1*x + b1*y + c1原创 2012-09-11 10:11:12 · 11000 阅读 · 3 评论 -
算法之美——八皇后
众所周知的八皇后算法,用递归实现: #include #include using namespace std;#define NUM 8int count=0;char cache[NUM][NUM] = {0};int level=0;void queen(int row, int max){ // 依次放置在列上; for (int i原创 2012-09-26 21:41:57 · 1594 阅读 · 0 评论 -
什么是NP问题
概念:在计算机学科中,存在多项式时间的算法的一类问题,称之为P类问题;而像梵塔问题、推销员旅行问题、(命题表达式)可满足问题这类,至今没有找到多项式时间算法解的一类问题,称之为NP类问题 拿推销员旅行问题为例,假设推销员亨利有向6个城市推销公司产品的任务,并规定了一个旅行预算。他手中有一张航班票价表,他要从A城开始走遍图中的6个城市后返回A城,并且不超出预算,请你帮他找出应走的路线。如原创 2012-10-24 16:06:11 · 6945 阅读 · 0 评论 -
每日一题(15)——Digit Root(大数)
Digital RootsTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 23650 Accepted: 7843 DescriptionThe digital root of a positive integer is found by summing原创 2012-11-27 00:10:43 · 1293 阅读 · 0 评论 -
每日一题(10)——统计连续数字中1的个数
问题:输入十进制数字N,统计从1到N的连续数字中,所有的1出现的次数。 例如:•N = 3, f(3) = 1 (只有一位数字的情况)•(两位数字的情况)•N = 13, f(13) = 6 2+4•N = 23 ,f(23) = 13 3+10•N = 33, f(33) = 14 10+4•……•N = 9原创 2012-11-22 23:18:30 · 2088 阅读 · 0 评论 -
每日一题(11)——单链表常见问题
一、单链表的存取 1.找出单链表的倒数第K个元素(仅允许遍历一遍链表)两个指针fast,slow:fast首先前进到第k个位置;然后两指针共同后移,直到fast到达末尾,slow所指元素即为所求。 2.找出单链表的中间元素(仅允许遍历一遍链表)两个指针fast,slow:fast每次后移2次,slow每次后移1次,直到fast到达末尾,slow所指元素即为所原创 2012-11-23 23:50:49 · 1777 阅读 · 0 评论 -
每日一题(13)——24点 (分治&递归)
问题描述: 给玩家4张牌,每张面值1~13,采用+、-、*、/以及括号,使其最终结果为24解答:1.穷举法每个数只能使用一次,所以对4个数进行全排列共有4!=24种排列;需要3个四则运算符号:4^3=64种;加括号方式:(A(B(CD))), ((A(BC))D), ((AB)(CD)), (A((BC)D))), (((AB)C)D) 5种共有:4! * 4原创 2012-11-26 23:32:37 · 2651 阅读 · 0 评论 -
每日一题(17)——调整一摞饼(递归)
一,问题: 星期五的晚上,一帮同事在希格玛大厦附近的“硬盘酒吧”多喝了几杯。程序员多喝了几杯之后谈什么呢?自然是算法问题。有个同事说:“我以前在餐馆打工,顾客经常点非常多的烙饼。店里的饼大小不一,我习惯在到达顾客饭桌前,把一摞饼按照大小次序摆好——小的在上面,大的在下面。由于我一只手托着盘子,只好用另一只手,一次抓住最上面的几块饼,把它们上下颠倒个个原创 2012-11-29 09:53:13 · 1274 阅读 · 0 评论