数据结构和算法
xuqianghit
互联网门外汉
展开
-
每日一题:过桥问题
每日一题:过桥问题<br /><br /> <br />问题描述:<br /> <br />今天偶然在《读者》上看到了益智问题 ,试着解了一下,感觉还是很有意思,google了一下,晚上都说是微软面试题,但是我找了找,在《How to Slove it》这本书中就有提到。不知道是谁cp的谁的。好吧,说说问题:U2合唱团在17分钟内得赶到演唱会,途中必须经过一座桥,4个人从桥的同一端出发,你得帮助他们到达另外的一段,天色已经暗下来,但是他们手中仅有一个手电筒,自此最多只能有两个人过桥,而过桥的时候必须持有手电原创 2010-11-27 18:15:00 · 820 阅读 · 0 评论 -
函数的增长
1. 渐进符号表示2. 常见函数表示 1. 渐进符号2. 常见函数表示2.1 函数的单调性 2.2 向下向上取整2.3 取模运算2.4 对数 作者:许强(就读于[哈尔滨工业大学(威海)软件学院]) 出处:[http://xuqiang.cnblogs.com]1. 本博客中的文章均是个人在学习和项目开发中总结。其中难免存在不足之处 ,欢迎留言指正。2. 本文版权归作者和博客园共有,转载时,请保原创 2011-07-02 13:22:37 · 720 阅读 · 0 评论 -
冒泡排序
1. 实现基本原理2 实现代码 1.实现基本原理 2. 实现代码using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace FindMissingNumber{ // 冒泡排序 class BubbleSort { public static原创 2011-07-02 13:19:17 · 669 阅读 · 0 评论 -
阶乘中0的个数
<br />1. 问题描述:<br /> <br />给定一个N,那么N的阶乘的末尾中0的个数是多少?<br /> <br />2. 解题思路<br /> <br />通过分析可得,只要得到从1到N中每个数5的幂的次数总和。<br /> <br />3. 实现代码:<br /> <br /><br />//----------------------------<br />// count zero number<br />//--------------------------<br />#include原创 2011-03-10 09:02:00 · 673 阅读 · 0 评论 -
木棒三角形
<br />1. 问题陈述<br /> <br /> http://acm.hrbeu.edu.cn/index.php?act=problem&id=1003&cid=17<br />小A家里有很多长度不一样的木棍,有一天他很无聊,只能摆弄这些木棒来解闷了。小A的数学学得很好,所以他想在这些木棒中挑出3根来组成一个直角三角形,当然,他有可能有很多种选法,所以他还想挑出一个面积最大的。<br /> <br />2. 解题思路<br /> <br />由于数组是从小到大排列的,这里采用穷举的方法来实现。<br原创 2011-03-09 21:44:00 · 1466 阅读 · 0 评论 -
汉诺塔问题
<br />1. 问题陈述:<br /> <br />http://acm.hrbeu.edu.cn/index.php?act=problem&id=1002&cid=17<br /> <br /><br /> <br />汉诺塔(又称河内塔)问题其实是印度的一个古老的传说。<br />开天辟地的神勃拉玛(和中国的盘古差不多的神吧)在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一 个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用原创 2011-03-08 10:31:00 · 1468 阅读 · 0 评论 -
计数问题
问题陈述:http://acm.hrbeu.edu.cn/index.php?act=problem&id=1001&cid=17给你两个数a和b,你的任务是计算出1在a和b之间出现的次数,比如说,如果a=1024,b=1032,那么a和b之间的数就是:1024 1025 1026 1027 1028 1029 1030 1031 1032则有10个1出现在这些数中。简单的实现思路:#include #include int CountDigists(int n){ int count = 0;原创 2011-03-08 09:59:00 · 599 阅读 · 2 评论 -
每日一题 -- 不使用变量实现c语言的strlen函数
每日一题 -- 不适用变量实现c语言的strlen函数问题描述:编写一个c语言函数strlen,要求在其中不能够使用任何的变量思路:如果在函数体重不能使用变量,同时考虑到斐波那契数列的递归求解的过程,可以联想到使用“递归”来实现。实现代码:#include #include // strlen实现,但是在其中不能使用任何变量int myStrlen(char* str){ if ('/0' == *str) { return 0; }原创 2010-11-19 15:49:00 · 773 阅读 · 0 评论 -
每日一题:不适用第三个变量,实现交换两个输入参数
每日一题:不适用第三个变量,实现交换两个输入参数问题描述:编写一个函数swap,输入两个参数a, b,要求函数中不能够使用第三个变量,函数输出交换之后的a和b。思路:如果程序中不能够使用另外的第三个变量的话,只能够通过所谓的“技巧"来实现。这里使用的技巧如下:a ^ 0 = a. a ^ a = 0(异或运算)实现代码:#include #include // 交换两个数据,但是不适用第三个变量void swap(int* a, int* b){ *b = (*a) ^ (*b);原创 2010-11-18 21:49:00 · 718 阅读 · 0 评论 -
每日一题:编写一个函数,不使用算术运算符,实现比较两个数的大小
每日一题:编写一个函数,不使用算术运算符,实现比较两个数的大小<br /> <br /> <br /> <br />问题描述:编写一个函数f,在函数f中,不能够使用算术运算符,实现比较输入两个整数的功能。<br /> <br /> <br /> <br />思路:<br />1.考虑使用绝对值来实现,但是这中方法其实还是在间接地使用了算术运算符,因为在abs函数中,存在数值的判定。<br />大的为 ((a+b)+abs(a-b)) / 2<br />小的为 (a+b - abs(a-b)) / 2<br原创 2010-11-20 09:54:00 · 1485 阅读 · 0 评论 -
每日一题:给定n, 求出小于n的所有数中1的位数
<br />每日一题:给定n, 求出小于n的所有数中1的位数<br /><br />问题描述:给定整数 n,要求编写函数f,返回[1, n]中所有数中1的位数。例如,如果f输入10的话,函数返回2,其中1中含有一个1,10中含有一个1.<br /> <br /><br />思路:这里首先想到的是对于给定一个整数 i,如果分解出i的各个数位。这个算法是比较简单的,取模10,然后除10即可。实现的代码如下:<br /> <br />// 这个函数直接输入的顺序和原来的数字// 相反的,下面使用递归的形式正序原创 2010-11-20 09:04:00 · 674 阅读 · 0 评论 -
算法导论 MIT视频教程
<br />http://itunes.apple.com/itunes-u/introduction-to-algorithms/id341597754#ls=1原创 2010-11-04 20:14:00 · 975 阅读 · 0 评论 -
每日一题:查找数组中最大最小值
每日一题:查找数组中最大最小值<br /> <br /><br /> 问题描述:<br />给定数组a1, a2, a3, ... an,要求编写函数f输出改数组的最大值和最小值。假设数组中的值两两不相同。<br /> <br /><br /> 思路:<br /> <br />朴素的算法可以通过遍历的算法,通过2n次的比较得到数组中的最大值和最小值。实现代码如下:<br /> <br /> public class Pair { // 构造函数 public原创 2010-12-07 20:35:00 · 911 阅读 · 4 评论 -
每日一题:那个开关控制那盏灯?
每日一题:那个开关控制那盏灯?<br /> <br /><br /> <br />问题描述:待续。。<br /> <br />解决:待续。。。<br /> <br />拓展问题:使用6根相同长度的火柴拼成4个等边三角形。很快我想使用5根火柴能够拼出2个等边三角形,那么如何实现4个等边三角形?问题的关键在于突破平面的思维,想象如果是在三维的空间内?问题的答案呼之欲出。<br /> <br />原创 2010-11-29 16:11:00 · 615 阅读 · 0 评论 -
二叉查找树范围查询算法
二叉查找树范围查询算法View more documents from xuqianghitsoft原创 2011-11-28 21:13:31 · 3018 阅读 · 0 评论