书法字典:https://www.shufadict.com

随笔分类 -  数据结构与算法

链表逆序(递归法)
摘要:来自SO,貌似没啥实际应用,但是思路不错,留存。#include #include using namespace std;struct node{ int data; node* next; node(int d, node* p):data(d), next(p){}};voi... 阅读全文

posted @ 2014-06-10 16:23 翰墨小生 阅读(3041) 评论(0) 推荐(0) 编辑

也谈走台阶问题
摘要:问题刚才在首页看到一篇博客,说的是腾讯的一道面试题:一个楼梯有50个台阶,每一步可以走一个台阶,也可以走两个台阶,请问走完这个楼梯共有多少种方法?博主把这题分析的很麻烦。引来很多人围观。我以前也碰到过这个问题。写出来和大家分享一下。举个例子,假设有3个台阶,则有三种走法:分别是,1-1-1, 1-2, 2-1。分析很简单的一道题,学过组合数学的人很快就能想到,这是一个递推关系。假设走完k个台阶有f(k)种走法。k = 1时,f(k) = 1k = 2时,f(k) = 2k = n时,第一步走一个台阶,剩n-1个台阶,有f(n - 1)种走法。第一步走两个台阶,剩n-2个台阶,有f(n - 2) 阅读全文

posted @ 2011-09-15 14:23 翰墨小生 阅读(4796) 评论(23) 推荐(7) 编辑

数组面试题-子数组之和
摘要:昨天在一位老兄的凡客面试题中看到的,拿来写一下。题目描述给定一个含有n个元素的整形数组a,再给定一个和sum,求出数组中满足给定和的所有元素组合,举个例子,设有数组a[6] = { 1, 2, 3, 4, 5, 6 },sum = 10,则满足和为10的所有组合是{1, 2, 3, 4}{1, 3, 6}{1, 4, 5}{2, 3, 5}{4, 6}注意,这是个n选m的问题,并不是两两组合问题。解法一:穷举法最直观的想法就是穷举,把数组中元素的所有组合情况都找出来,然后看看哪些组合满足给定的和即可,这种方法的计算量非常大,是指数级的,假设数组有n个元素,那么所有组合的情况一共有2 ^ n种( 阅读全文

posted @ 2011-07-14 17:24 翰墨小生 阅读(11106) 评论(29) 推荐(1) 编辑

也谈杨辉三角形
摘要:很久没更新博客了,来篇水的。今天看见有位兄弟写了杨辉三角形,记得以前自己也研究过,索性也发一篇,欢迎讨论。来历杨辉三角形也叫贾宪三角形,西方叫帕斯卡三角形,其实就是各阶二项式系数排列起来构成的三角形,如下。每行的数字实际上是(a + b) ^ n展开后的结果。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1历史上发现这个三角形的人很多,这里介绍几个主要的,北宋人贾宪约1050年首先使用“贾宪三角”进行高次开方运算。杨辉,字谦光,南宋时期杭州人。在他1261年所著的《详解九章算法》一书中,辑录了如上所示的三角形数表,称之为“开方作法本源”图。欧洲直到1623年以后,法国数学家帕斯卡在 阅读全文

posted @ 2011-07-11 17:48 翰墨小生 阅读(9428) 评论(4) 推荐(5) 编辑

字符串面试题(一)字符串逆序
摘要:几点说明1. 所有题目全部来自网络,书籍,或者我自己的面试经历,本人只是负责搜集整理。在此对原作者表示感谢!2. 我已经尽力确保文字及程序的正确性,但我毕竟是凡人,如果您发现了文章中的错误,或者有更好的解法,请一定留言相告,以免误导大家!3. 所有代码都采用C/C++编写很早就准备写一个字符串系列的... 阅读全文

posted @ 2011-03-09 21:31 翰墨小生 阅读(85594) 评论(56) 推荐(23) 编辑

关于数组的几道面试题
摘要:2011年2月15日更新,加入找出绝对值最小的元素一题 数组是最基本的数据结构,关于数组的面试题也屡见不鲜,本文罗列了一些常见的面试题,仅供参考,如果您有更好的题目或者想法,欢迎留言讨论。目前有以下18道题目,如果有好的题目,随时更新。 数组求和 求数组的最大值和最小值 求数组的最大值和次大值 求数 阅读全文

posted @ 2010-08-24 12:58 翰墨小生 阅读(58189) 评论(96) 推荐(20) 编辑

趣味编程-螺旋打印
摘要:描述给定一个自然数n,打印1-n之间所有的数,要求:按螺旋形状顺时针打印。以前看到过这道题,说的是从外向内螺旋打印,而前几天又看到一个变种,由内向外打印。比之前的稍微难一点,趁周末闲着没事,总结一下。先上两幅图,大家看一下效果。由外向内打印由内向外打印这两种输出方法,其实大同小异,道理都差不多,会了一种,则另一种不难,先看从外向内打印的分析最简单且直观的方法就是k * k的二维数组存储数字,先将数字按照要求填入数组,然后输出整个数组即可分配数组对于n个数而言,令k = Ceil(sqrt(n)), 则分配k*k的二维数组即可。比如n = 5时,分配3*3的数组即可。如何填数起始点以左上角为起始 阅读全文

posted @ 2010-06-05 20:20 翰墨小生 阅读(5816) 评论(11) 推荐(2) 编辑

STL-set
摘要:简介set是一种随机存储的关联式容器,其关键词(key)和元素(value)是同一个值。set之中所有元素互不相同。set是通过二叉查找树来实现的。创建创建一个空的set 1: set s0 ;创建一个带大于比较器的set, 默认是小于比较器less 1: set> s1 ;用数组初始化一个se... 阅读全文

posted @ 2010-06-01 22:23 翰墨小生 阅读(12233) 评论(2) 推荐(3) 编辑

算法-求一个二进制数的长度
摘要:任意给定一个32位无符号整数n,求其对应的二进制数长度。先举几个例子解释一下什么是二进制数的长度,比如8 = 1000,则长度是4, 7 = 0111,长度为3。所以一个二进制数的长度也即最高位1的下标值+1(下标从0开始)。题目很简单,下面提供三种方法普通方法递归法二分搜索+查表普通法移位+计数,每移位一次,计数器加1,直到n为0int BitLength(unsigned int n){ int c = 0 ; // counter while (n) { ++c ; n >>= 1 ; } return c ;}运算次数,如果n的二进制长度为k,那么共有k次循环,最多循环32 阅读全文

posted @ 2010-05-19 15:32 翰墨小生 阅读(11961) 评论(15) 推荐(4) 编辑

与二进制有关的几道面试题
摘要:这个是在博客园的博问里面看到的1、现有1000个苹果,10个盒子,现在要你将1000个苹果装入10个盒子中,使得用户无论购买多少个苹果(1-1000),都能由若干个盒子拼装而成(卖的时候是整个盒子卖,不能拆盒子的包装)解法:考虑1, 2, 4, 8这四个数,由这四个数可以组成1-15之间任意一个数,也即1,2, 4 ... 2n 可以组成1-2(n+1)-1之间所有的数。所以这十个盒子分别放入1, 2, 4, 8, 16, 32, 64, 128, 256, 489个苹果,即可组成1-1000内所有的数。2. 有1000瓶液体,无色无味,外表完全一样,其中一瓶是毒药,有10条警犬,警犬喝过毒药 阅读全文

posted @ 2010-03-28 21:36 翰墨小生 阅读(1615) 评论(2) 推荐(0) 编辑

素数环-谈代码优化
摘要:昨天在博问里面看到的一道算法题,原题如下:给出一个N(01//Isnprime?2boolIsPrime(intn)3{4for(inti=2;i*i1voidPrimeCircle(inta[],intn,intt)2{3if(t==n)4{5Output(a,n);//找到一个解6}7else8... 阅读全文

posted @ 2010-03-27 17:10 翰墨小生 阅读(4647) 评论(6) 推荐(3) 编辑

输出循环小数
摘要:刚刚在博客园看到的一个题,写出来,留作备份,两个整数a和b,输出他们的商,循环小数要加括号。example:1/3 输出 0.(3)2/8 输出 0.2523/6 输出 3.8(3)思路:两个数组,一个存储商,一个存储余数,前者用于检查余数是否重复出现,后者用来输出小数部分。1. 能整除的直接输出2. 否则,一直除,直到余数为0或者余数重复出现。输出所有的小数部分即可,两次余数出现之间的加上括号代... 阅读全文

posted @ 2010-03-19 11:42 翰墨小生 阅读(870) 评论(2) 推荐(0) 编辑

反转一个整数
摘要:原型:unsigned Reverse(unsigned int n) ;我的代码:用了浮点函数log10, pow不仅效率低,还会损失精度。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->1unsignedReverse(unsignedn)2{3intdigits=(int)log10((double)n);45intr=0;6while(n)7{8intt=n%10;9r+=t*pow((double)10,digits--);10n/ 阅读全文

posted @ 2010-03-12 17:35 翰墨小生 阅读(2284) 评论(0) 推荐(0) 编辑

一道概率题-From VCK 小白
摘要:题目描述:一个随机函数f(),只返回1和0,返回1的概率是p,返回0的概率是1-p,构造另外一个函数,只返回1和0,概率各1/2答案,有代码有真相Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.Co... 阅读全文

posted @ 2010-03-12 09:08 翰墨小生 阅读(522) 评论(0) 推荐(0) 编辑

Binary Search
摘要:简单的二分搜索:在一个非递减序整型数组中搜索值value,返回其所在下标最普通的二分搜索CodeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->1sta... 阅读全文

posted @ 2009-09-18 10:59 翰墨小生 阅读(489) 评论(1) 推荐(0) 编辑

Generate permutation for N elements
摘要:原理:这个代码好久之前就会了,可是对于其原理一直一知半解其实这个算法的原理和我们手动求全排列的过程是一样的,假设有三个元素a, b, c, 我们求他们的全排列时是按照如下的方法以a开头的有两个a, b, ca, c, b以b开头的有两个b, a, cb, c, a以c开头的有两个c, a, bc, b, a所以一共有六个一般来说,对于给定的n个元素,首先拿出一个元素放到第一个位置,然后对于剩下的n... 阅读全文

posted @ 2009-09-10 16:12 翰墨小生 阅读(610) 评论(0) 推荐(0) 编辑

也谈交换两个变量
摘要:不使用第三个变量交换两个变量的值,老生常谈了常见的两种方法int a = 1;int b = 2;[代码]最近在园子里看到下面的方法[代码]乍一看,真不敢相信是真的,上机一试还真行,但仅限于C#,在C++下面是不行的看一下反汇编后的代码就一目了然了C#反汇编代码[代码]C++反汇编代码:[代码]可见二者的区别就是,C#在求值过程中保存了b的值,而C++没有总结:此题的本质就是求一种操作X,要保证X... 阅读全文

posted @ 2009-08-27 16:39 翰墨小生 阅读(650) 评论(0) 推荐(1) 编辑

DP_knapsack
摘要:动态规划法解0-1背包问题问题描述:有n个背包,重量依次为w1,w2, ... ,wn, 价值依次是v1,v2, ... ,vn, 现在有一个大背包,其容量是capacity,往其中装小背包,要求得到的总价值最大,如何装?用value[i, w]表示有i个背包且总重量最大是w时的价值,那么当考虑第i个背包时,有两种情况1. 将此背包装入大包,价值是 v[i] + value[i - 1, w- w... 阅读全文

posted @ 2009-06-23 16:55 翰墨小生 阅读(548) 评论(0) 推荐(0) 编辑

Maximum Subsequence Multiplication
摘要:Given an array a contains integers, returnthe maximum consecutive multiplication Example:int[] a = {2, -2, -3, 4, -5, 6} ;return 360 (-3 * 4 * -5 * 6)code[代码] 阅读全文

posted @ 2009-06-10 16:02 翰墨小生 阅读(455) 评论(0) 推荐(0) 编辑

Maximum subsequence sum
摘要:This is a very famous problem from programming pealsGiven an array of integers, return the maximum subsequence sum of the array, if the maximus sumless than 0, return 0Example1, 2, -6, 3, -2, 4, -1, 3... 阅读全文

posted @ 2009-06-09 17:08 翰墨小生 阅读(411) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
书法字典:https://www.shufadict.com
点击右上角即可分享
微信分享提示