- 博客(74)
- 资源 (4)
- 问答 (88)
- 收藏
- 关注
转载 手把手教你:分析递归算法的时间复杂度
原作者地址:http://www.cnblogs.com/wu8685/archive/2010/12/21/1912347.html 递归算法时间复杂度的计算方程式一个递归方程: 在引入递归树之前可以考虑一个例子: T(n) = 2T(n/2) + n2 迭代2次可以得: T(n) = n2 + 2(2T(n/4) + (n/2)
2014-09-25 00:39:53 5571 1
原创 编程之美:第一章 1.15构造数独
/*构造数独:数独的棋盘是由九九八十一个小方格组成的。玩家在每个小格子中,分别天上1至9的任意一个数字,让整个棋盘每一行,每一列,以及每一个3*3的小矩阵中的数字都不重复。使用一个二维数组来存储,每一个元素对应数独中的一个数。但考虑到每一个格子有若干属性,可以把每个格子抽象为一个对象,把整体看成9*9个格子对象生成游戏初始局面:可以向生成一个完整合法的解,然后再随机地去掉一些数
2014-09-14 21:08:49 1253
原创 编程之美:第一章 1.14连连看游戏设计
/*连连看游戏设计:主要包含游戏局面的状态描述,游戏规则的描述:状态的合法转移(哪些操作满足规则,经过这些操作,达到哪些状态)。自动机模型适合描述游戏设计。如何求出相同图形之间的最短路径,最短路径的转弯数目最少,转弯数目最少时,经过格子数目尽可能少。最短路径中:把最短路径问题的目标函数改为从一个点到另一个店的转弯次数。广度优先搜索首先把图形A(x1,y1)压入队列,然后扩展A(
2014-09-14 21:07:13 1589
原创 编程之美:第一章 1.13 NIM两堆石头的游戏
/*NIM两堆石头的游戏:假设有两堆石头,有两个玩家会根据如下的规则取石头:没人每次可以从两堆石头中各取出数量相等的石头,或者仅从一堆石头中取出任意数量的石头;最后把剩下的石头一次拿光的人获胜。对于数量分别为1和2的两堆石头,取石头的第一个玩家必定会输掉游戏,因为它要么只能从任意一堆石头中取出一块石头,要么只能从两堆中各取出一块石头。但无论采用哪种方式取,最后剩下的石头恰好
2014-09-14 21:03:34 1181
原创 编程之美:第一章 1.12拈石游戏分析
/*拈游戏分析:有N块石头和两个玩家A和B,玩家A先将石头分成若干堆,然后按照BABA...的顺序不断轮流取石头,能将剩下的石头一次取光的玩家获胜。每次取石头的时候,每个玩家只能从若干堆石头中任选一堆,取这一堆石头中任意数目(大于0)个石头。问:玩家A要怎样分配和取石头才能保证自己有把握取胜?经分析得出:若石头数目是偶数,则分成两堆,形成(X,X)局面,此时无论对手从一
2014-09-14 21:02:15 1076
原创 编程之美:第一章 1.10双线程高效下载
/*双线程高效下载:下载一块数据,写入硬盘,然后再下载,再写入硬盘,不断重复这个过程,直到所有的内容下载完毕为止。能否对此进行优化?1假设所有数据块的大小都是固定的。你可以使用一个全局缓存区:Block g_buffer[BUFFER_COUNT]2假设两个基本函数已经实现(你可以假定两个函数都能正常工作,不会抛出异常)bool GetBlockFromNet(Bl
2014-09-14 21:00:49 771
原创 编程之美:第一章 1.11一排石头的游戏
/*一排石头的游戏:N块石头排成一行,每块石头有各自固定的位置,两个玩家依次取石头,每个玩家可以取其中任意一块石头,或者相邻的两块石头,石头在游戏过程中不能移位(即编号不会改变),最后能将剩下的石头一次取光的玩家获胜。分析:若给N块石头从1到N依次编号,则我们只能取到编号相邻的两块石头,例如可以同时取编号为1和2的两块石头,但不能同时取编号为1,3的两块石头。当石头为1
2014-09-14 21:00:46 846
原创 编程之美:第一章 1.9高效率地安排见面会
/*每一个面试是一个整数的闭区间[B[i],E[i]],表示开始时间和结束时间,有N个面试要进行,求最少的面试点思路:按开始时间排序,使用贪心策略,每一个面试用一个最小的正整数k来表示可行的颜色,当然如果重叠了就必须使用一个新的颜色输入:4(N场见面会,接下来有N行,每一行表示节目的开始时间和结束时间)1 52 33 43 6输出:3*/#i
2014-09-14 20:56:53 892
原创 编程之美:第一章 1.8电梯调度算法
/*电梯调度算法:微软有6部电梯,每层都有人上下,电梯在每层都停。每次电梯从一层往上走时,只允许电梯停在其中的某一层。所有的乘客都从一楼上电梯,到达某层后,电梯停下来,所有乘客再从这里爬楼梯到自己的目的层。在一楼的时候,每个乘客选择自己的目的层,电梯则自动计算出应停在的楼层。电梯停在那一层,能够保证这次乘坐电梯的所有乘客爬楼梯的层数之和最少。分析:本质是优化问题。如何寻
2014-09-14 20:54:18 1035
原创 编程之美:第一章 1.7光影切割问题
/*光影切割问题:不少人爱玩CS。仓库的地面会因为阳光从屋顶的漏洞或者窗口照射进来而形成许多光照区域和阴影区域。假设不同区域的边界都是直线,我们把这些直线都叫做光影线。并假设没有光影线是平行于Y轴的,且不存在三条光影线相交于一点的情况。那么,如果我们需要快速计算某个时刻,在X坐标[A,B]区间的地板上被光影划分成多少块。如何设计算法题目一旦找不到规律:那么应该通过从最简单的
2014-09-14 20:51:11 963
原创 编程之美:第一章 1.6饮料供货
/*饮料供货:大家对每一种饮料的满意度是知道的。微软供应部每天供应总量为V的饮料。每种饮料的单个容量都是2的方幂,比如王老吉,都是2^3 = 8升的,可乐都是2^5 = 32升的。每种饮料也有购买量的上限。统计数据中用饮料名字,容量,数量,满意度描述每一种饮料。如何求出保证最大满意度的购买量?分析:假设STC提供n种饮料,用(Si,Vi,Ci,Hi,Bi)(对应的是饮料的名
2014-09-14 20:51:05 1061
原创 编程之美:第一章 1.5快速找出机器故障
/*快速找出机器故障:为了保证搜索引擎的服务质量,我们需要保证每份数据都有多个备份假设一个机器仅存储了一个标号为ID的记录(假设ID是小于10亿的整数),假设每份数据保存了两个备份,这样就有两个机器储存了同样的数据。1在某个时间,如果得到一个数据文件ID的列表,是否能够快速地找出这个表中仅出现一次的ID?2如果已经知道只有一台机器死机(也就是说只有一个备份都是)呢?如果有两
2014-09-14 20:49:34 726
原创 编程之美:第一章 1.4 买书问题
/*买书问题:买哈利波特,共有5本。假设每一卷单独销售需要8欧元,一次购买不同的两卷可以扣除5%的费用,三卷则更多。折扣如下:本数 折扣2 5%3 10%4 20%5 25%在一份订单中,根据购买的卷数及本数,就会出现不同折扣,但是一本书只会应用一个折扣规则。比如,读者买了两本卷1,一本卷2,那么可以享受5%的折扣。另外一本
2014-09-14 20:47:55 912
原创 编程之美:第一章 1.3 一摞烙饼的排序
/*一摞烙饼的排序:把一摞并按照大小次序摆好,小的在上面,大的在下面。由于我一只手托着盘子,只好用另一只手,一次抓住最上面的几块饼。把它们上下颠倒一下,反复几次,烙饼就排好序了。请写一个程序,对于n块大小不一的烙饼,输出最优化的翻饼过程。分析:每次我们只能选择最上方的一摞饼,一起翻转。不能一张一张直接抽取出来,然后进行插入,也不能交换任意两块饼。因此,基本的排序方法不好
2014-09-14 20:41:33 856
原创 编程之美:第一章 1.2 中国象棋将帅问题
/*中国象棋将帅问题:自古将帅不能照面 __ __ __10 将987654321 帅 a b c d e f g h iA表示将,B表示帅,A被限制在{d10,f10,d8,f8}中,B被限制在{d3,f3,d1,f1}中。每一步A,
2014-09-14 20:39:59 822
原创 编程之美:第一章 1.1 让CPU占用率曲线听你指挥
/*让CPU占用率曲线听你指挥:写一个程序,让用户来决定Windows任务管理器的CPU占用率。实现下面的要求:1 CPU的占用率固定在50%,为一条直线2 CPU的占用率为一条直线,具体占用率由命令行参数决定(参数范围1~100)3 CPU的占用率状态是一条正弦曲线CPU的占用率 = CPU忙的时间(执行程序)/刷新周期总时间System Idle Process占用
2014-09-14 20:39:45 1187
原创 手把手教你:Boost编译使用报错的解决方法
Boost编译使用报错的原因:包含库文件时,不能写成:E:\Boost_1_56_0\Boost_1_56_0\stage\lib\*必须写成E:\Boost_1_56_0\Boost_1_56_0\stage\lib\*.lib这样会将dll过滤掉,否则会发生fater link:***.dll错误,0x ***处无法读取的错误
2014-09-14 20:32:01 3555
转载 手把手教你:用VS2012编译boost1.53
VS2012编译boost1.53分类: C++2013-05-09 10:26 2850人阅读 评论(1) 收藏 举报一、下载Boost库boost_1_53_0.zip (http://www.boost.org/users/download/),解压到F:boost_1_50_0要做Python开发的还需下载: python-2.7.3.msi (http://w
2014-09-14 20:30:02 963
转载 手把手教你:vs2012+qt5.2.0环境搭建
vs2012+qt5.2.0环境搭建1、安装vs2012;2、下载Qt5.2.0 for Windows 32-bit (VS 2012, 579 MB) 和 Visual StudioAdd-in 1.2.2 for Qt5 注意:此处不要选择64位的,否则插件会和qt不匹配,插件是32位的。3、安装Qt 5.2.0 forWindows 32-bit,
2014-09-14 20:28:24 2135
转载 手把手教你:win7下VS2012安装
VS2012安装图解· · |· 浏览:0· |· 更新:2014-08-25 09:04· 1· 2· 3· 4· 5· 6分步阅读详细介绍 VS2012安装步骤和注意事项。工具/原
2014-09-14 20:25:18 2438
转载 手把手教你:制作u盘启动盘 + 装win7系统 教程
系统之家U盘启动工具 -制作U盘启动盘教程来源:未知 作者:admin 时间:2014-08-05 18:43工具准备:1.u启动u盘启动盘制作工具v6.0(立即下载)2.需要制作启动盘的u盘一个(容量建议大于2GB)3.系统之家U盘启动工具 下面简称 系统之家 。第一步:下载并安装系统之家U盘启动软件到电脑。1、到系统之家官网下载最新版本软件到
2014-09-14 20:22:50 2454
原创 剑指Offer:面试题50 树中两个节点的最低公共祖先
/*树中两个节点的最低公共祖先:题型1:求二叉搜索树中两个结点的最低公共祖先思路:如果当前值比两个结点的值都大,那么只需要向当前节点的左子树继续向下遍历即可,直到找到介于两个结点值中间的结点。如果当前值比两个结点的值都小,那么向当前结点的右子树继续向下遍历即可。题型2:求普通树(含有指向父节点的指针)中两个结点的最低公共祖先这样的话,就可以转化为起始结点为待求节点,终点为根
2014-09-10 22:12:28 884
原创 剑指Offer:面试题49 把字符串转换成整数
/*把字符串转换成整数:输入:输入可能包含多个测试样例。对于每个测试案例,输入为一个合法或者非法的字符串,代表一个整数n(1输出:对应每个测试案例,若输入为一个合法的字符串(即代表一个整数),则输出这个整数。若输入为一个非法的字符串,则输出“My God”。样例输入:5-5+8样例输出:5-58*//*关键:1
2014-09-10 22:11:30 984
原创 剑指Offer:面试题46 求1+2+...+n
/*求1+2+...+n:要求不能使用乘除法,for,while,if,else,switch,case等关键字及条件判断语句(A ? B : C)输入:输入可能包含多个测试样例。对于每个测试案例,输入为一个整数n(1输出:对应每个测试案例,输出1+2+3+…+n的值。样例输入:35样例输出:615*//*关键:1 Coun
2014-09-10 22:08:54 900
原创 剑指Offer:面试题45 圆圈中最后剩下的数字
/*圆圈中最后剩下的数字:0,1,。。。,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。这是C语言书上的一道题目设置一个剪枝数组,设定一个循环,循环出口是只剩一个元素,刚开始置剩余元素总数目为n,后面会更新。注意每次当计数器变量走到n时,表明一个循环结束了,应将n变为0,从头开始遍历,小的圆圈是通过m取余来遍历
2014-09-10 22:07:58 837
原创 剑指Offer:面试题47 不用加减乘除做加法
/*不用加减乘除做加法:写一个函数,求两个整数之和,要求在函数体内不得使用+,-,*,/四则运算符号分析:尝试把二进制的加法用位运算来代替。第一步不考虑进位对每一位相加。0加0,1加1的结果都是0,因此这里的加法与亦或效果相同。只有1加1才能进位,即左移一位想象成是两个数先做位与运算,然后在向左移动一位。只有两个数都是1的时候,位与的结果是1,其余都是0.第三步相加
2014-09-10 22:07:47 709
原创 剑指Offer:面试题44 扑克牌的顺子
/*扑克牌的顺子:从扑克牌中随机抽出5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。分析:如何确定5个数字是连续的?难道用累加判断过程:1把数组排序,2统计0的个数,3统计数组中相邻元素之间的空缺总数如果空缺总数注意:如果数组中非0数字重复出现,那么不可能是对子输
2014-09-10 22:06:23 779
原创 剑指Offer:面试题43 n个骰子的点数
/*n个骰子的点数:把n个骰子仍在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。骰子一共6个面。n个骰子的和的最小值为n,最大值为6n。n个骰子的所有点数的排列数为6^n。我们需用统计每一个点数出现的次数,然后把每一个点数出现的次数除以6^n,就能求出每个点数出现的概率。递归解法:如何统计每个点数出现的次数?可以把n个骰子分成两堆,第一
2014-09-10 22:02:58 854
原创 剑指Offer:面试题41 和为s的两个数字
/*和为s的两个数字:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得他们的和正好是s。如果有多对数字的和等于s,输出任意一队即可。例如输入数组{1、2、4、7、11、15}和数字15.由于4+11=15,因此输出4和11。基本方法:固定一个数字,再依次判断其余n-1个数字与它的和是不是等于s。如果小于s,可以选择较小的数字后面的数字如果大于s,可以选择
2014-09-10 22:02:51 827
原创 剑指Offer:面试题40 数组中只出现一次的数字
/*数组中只出现一次的数字:一个整型数组里除了两个数字之外,其他的数字都出现了两个,请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)分析:直接遍历,统计次数O(n),但空间复杂度为O(n)书析:a^a = 0,任何一个数字异或自己为0,所以从头到尾依次异或数组中的每个数字,那么最终结果恰好是那个只出现一次的数字。试着把原数组分成
2014-09-10 22:01:51 737
原创 剑指Offer:面试题42 反转单词顺序
/*反转单词顺序:输入一个英文句子,反转句子中单词的顺序,但单词内字符的顺序不变,为了简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student.",则输出"student. a am I"。思路:首先将整个字符串完全反转,然后对单个单词利用空格做切分后反转输入:每个测试案例为一行,表示一句英文句子。我们保证一个句子的单词数不会超过600,每
2014-09-10 22:01:40 884
原创 剑指Offer:面试题38 数字在排序数组中出现的次数
/*数字在排序数组中出现的次数:统计一个数字在排序数组中出现的次数。例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4。分析:关键是找到2和4,即第一个是3的字符的位置和第一个不是3的字符的位置,然后利用下标相减就可以。起始本质上是lowerBound和upperBound问题的翻版lowerBound:upperB
2014-09-10 21:59:45 769
原创 剑指Offer:面试题39 二叉树的深度
/*二叉树的深度:输入一颗二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、也节点)形成树的一条路径,最长路径的长度为树的深度 1 2 3 4 5 6 7图中二叉树的深度为4,从根节点1开始经过结点2和5,最终到达叶结点7输入:第一行输入有n,n表示结点数,结点号
2014-09-10 21:58:40 662
原创 剑指Offer:面试题37 两个链表的第一个公共结点
/*两个链表的第一个公共结点:输入两个链表,找出它们的第一个公共结点。、分析:这是数据结构的一道题目。设长链表长度为L=5,短链表长度为S = 3,那么先让长链表走L-S= 2步,那么长链表从第3个节点开始,短链表从第一个节点开始,依次比较即可。输入:输入可能包含多个测试样例。对于每个测试案例,输入的第一行为两个整数m和n(1接下来的两行,第一行为第
2014-09-10 21:57:34 628
原创 剑指Offer:面试题35 第一个只出现一次的字符
/*第一个只出现一次的字符:在字符串中找出第一个只出现一次的字符。如输入"abaccdeff",则输出'b'分析:直接对每个字符统计次数,用哈希做遍历,应该时间复杂度为O(n)。寻找第一次出现的次数为1的字符时,我们按照字符顺序来遍历题目描述:在一个字符串(1输入:输入有多组数据每一组输入一个字符串。输出:输出第一个只出现一次的字符下标,没有只出现一
2014-09-10 21:54:49 648
原创 剑指Offer:面试题36 数组中的逆序对
/*数组中的逆序对:这是基于归并排序的,而快速排序的某个应用是寻找第k大的数在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。例如在{7,5,6,4}中,一共存在5个逆序对{7,6},{7,5},{7,4},{6,4},{5,4}总结:先把数组分隔成子数组,先统计出子数组内部的逆序对数目,在统计两个
2014-09-10 21:53:55 768
原创 剑指Offer:面试题33 把数组排成最小的数
/*把数组排成最小的数:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接处的所有数字中的最小的一个。例如输入数组{3,32,321},则打印出这3个数字能排成的最小数字321323思路:我们应该对于给出的两个数字m和n,需要确定规则m和n哪个应该排序在前面,而不是比谁大谁小。m和n能拼成mn或者nm,当mn由于m和n都在int中,而拼接之后可能溢出,因
2014-09-10 21:52:20 812
微软面试100题系列by_July
2014-07-29
超越c++标准库——boost程序库导论
2014-07-29
grafana如何接入gnocchi数据
2017-05-27
配置gnocchi作为Grafana数据源报错
2017-05-18
devstack报错generate-subunit fail
2017-05-08
请教各位朋友cv2的python版本中imwrite无法生成带有中文路径的图片?
2016-06-07
关于Linux的sed命令在行首添加空格的问题?
2016-05-22
Linux:使用sed命令替换时,如何在前面添加四个空格呢
2016-05-22
各位朋友好,请教sed查询到“[client]”这一行后,在这一行下面追加一行新的内容
2016-05-22
请教各位大神,如何用python提取出两幅图像中不同的部分?
2015-12-28
请教各位大神,AutoHotkey如何实现二维数组?
2015-11-29
请教各位算法大神,acm一道题:赋权无向图的最小权值遍历用什么算法(存在负权值)?
2015-11-25
请教各位大神,为什么django下载的zip压缩包文件名中包含中文的就乱码啊?
2015-10-28
请教各位朋友们,为什么html中的video标签不能播放时长大于5s的视频?
2015-10-25
请教朋友们,python3.4如何安装相对应的第三方库
2015-10-08
django如何在用户登录后返回到原来来页面,并保持登陆状态
2015-09-28
django如何将mysql中表的内容通过models.py在网页端显示
2015-09-18
python+django能够同时使用mongodb和mysql两种数据库引擎吗?
2015-09-17
django实现**.zip包下载报错内存使用过大
2015-08-03
无法访问部署在mac服务器到虚拟机Ubuntu端口映射做成的服务器上的网站
2015-07-25
xshell无法通过外网连接VBox中的虚拟机
2015-07-23
苹果笔记本主机如何将文件传送到virtual box中安装的ubuntu虚拟机中
2015-07-22
在ubuntu环境下执行python程序,报错 segment error
2015-07-18
django取出pymongo中存储的中文图片路径后,读取该路径在网页上展示没有出现图片
2015-07-16
读取python遍历中文目录得到的文件路径报错
2015-07-10
python中的os.walk函数为什么遍历带有中文的路径时就失败?
2015-07-09
pynlpir在ubuntu下为什么不能对带有中文路径的文件分词
2015-06-22
struts中的gdc:defineCollection这句话是什么意思
2015-05-13
struts下的jsp文件中html:select 下的各个属性有哪些
2015-05-12
html视频播放进度条上如何加入点号,并且鼠标移动到点号上显示关键帧图片
2015-05-04
如何在html图片上方叠加一个半透明颜色层,并在半透明颜色层上叠加文字
2015-05-03
ffmpeg提取视频中的帧保存为图片的序号如何从0开始
2015-04-30
ffmpeg 截取图片的时间对应于原来视频中的时间点如何获取
2015-04-30
ubuntu环境下使用ffmpeg获取视频总时间的命令该怎么写?
2015-04-30
如何在python中调用ffmpeg的命令行语句
2015-04-30
ffmpeg -vf中的命令参数-vf是什么意思
2015-04-30
use pyffmpeg install on win7,but has errors
2015-04-29
python中unicode对象与str对象中汉字的长度不同这是为什么
2015-04-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人