
算法与数据结构
文章平均质量分 60
skeleton703
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
测试多瓶液体中毒药所在小探
某天课上听老师讲起这个趣题,特此记录一下。题目:有1000瓶液体,其中一瓶装了慢性毒药,喂食毒药一周后实验用小白鼠会突然出现失去生命体征反应,问最少用多少只小白鼠可以知道哪瓶液体中存有毒药(注意此处未考虑喂食毒药浓度及量,即有毒药就会产生反应,则可以喂食混合液体)。方法一:将1000只小白鼠按照2进制尽量分为两部分,其中一部分为2^9,即为512只,另一部分为488只,原创 2012-04-07 20:44:46 · 1442 阅读 · 0 评论 -
大数相乘(2)
大数相乘(1)见此。 其中大数相乘(2)与大数相乘(1)中的思路相同,存储结构也类似,些许不同为存储时空间采用的是len1 * len2,比上面的(len1 + len2) * len2要小。因为最近学C#,所以重写了一下。 using System;using System.Collections.Generic;namespace mytest_csharp{原创 2012-12-24 17:50:00 · 1656 阅读 · 0 评论 -
用移位和加减运算实现无符号整数除法
同样是同学遇到的面试题,面试官问的原题是如何用移位和加减实现除以3的操作,在此略微扩充一下,实现无符号整数除法,但是返回值也为无符号整型。 方法一:类似小学学习的除法运算,从高位开始减去除数,此处用除数左移到跟被除数对齐,在相减之前商也同样需要左移,代码如下。#include using namespace std;unsigned int divide(unsigne原创 2012-04-28 20:31:38 · 5257 阅读 · 0 评论 -
不用大于、小于、if语句比较两个数的大小
题目:定义一个宏,比较两个数a和b的大小,不能使用大于、小于或if语句。考虑以下两种方法,注意不同机器上的字长问题。#include #define Max(a,b) (((long)((a)-(b)))>>(sizeof(long)*8-1)?b:a)#define max(a,b) ((((a)-(b))>>(sizeof((a)-(b))*8-1))?b:a)in原创 2013-04-07 23:34:42 · 2642 阅读 · 0 评论 -
快速匹配兄弟字符串
题目:如果两个字符串的字符一样,但是顺序不一样,被认为是兄弟字符串,问如何快速匹配兄弟字符串(如,bad和adb就是兄弟字符串)。 解法:设置一个int型的二维数组count[2][126](126是为了与ASCII码表中常用字符数统一,便于累加处理),分别统计两个字符串中字符出现个数,然后比较count[0]和count[1],看是否一致。#include #include原创 2013-04-16 00:39:00 · 2427 阅读 · 0 评论 -
输入1个数输出其二进制表示中1的个数
面试题。题目描述就是写一个函数,要求输入一个数,输出其二进制表示中1的个数。此处假设输入的为int型。 方法一:首先想到的就是位运算,用移位得出每一位是否为1。代码如下所示。#include using namespace std;int numberof1(int in){ int count = 0; int input = in; for(int原创 2012-04-29 18:10:30 · 2025 阅读 · 0 评论 -
大数相乘(1)
题目:两个大数相乘。 大数相乘(2)见此。 方法1:将两个大数分别用数组存储,模拟乘法运算,将其中一个数组的每一位分别与令一个大数相乘,结果相加。代码见后面代码部分的string multiply1(bignumber &bignumber2)。方法2:同样是上面的思路,不同的是存储过程直接用一个二维数组来存取每一位相乘的结果,然后处理相加的过程。代码见后面代码部分原创 2012-12-24 17:42:38 · 1277 阅读 · 0 评论 -
用rand7()构造rand10()
好久没有更新了,最近在接触Java,看了网上的算法题目,用Java实现了一下。题目:已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10() 随机1~10。解法1:将rand7()构造成rand2()和rand5(),用等概率构造rand10()。import java.util.Random;public class ran原创 2012-12-06 17:22:37 · 1256 阅读 · 0 评论 -
输入1则输出0,输入0则输出1
同学前阵子面试碰到的面试题,回来交流了一下后总结了几种答案,题目就是写一个函数,做到输入1则输出0,输入0则输出1,面试时的要求是不需要考虑错误处理。面试官说是可以有二十多种解法的,暂时只想到了下面一些,部分解法总的思想应该差别不大。 假设该函数输入变量类型和返回变量类型均为int。 方法一:最先想到的就是利用if-else来处理,逻辑简单且错误处理很容易加上去,代码如下。#i原创 2012-04-28 17:26:24 · 3143 阅读 · 0 评论 -
五只猴子分桃
题目:五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的5堆,多出一只,它吃掉一只,拿走一堆,第二只猴子将桃子合并同样干了一次,其它几只都这么做,问min(桃子数)。 解法1:可知如果将桃子总数加上4,第一只猴子将其刚好可以分为5堆,拿到的是自己吃掉的1只和和拿走的一堆,第二只猴子也可以如此做,其它几只同理。即要求(4^4)*(x + 4)/(5^5)为整数,可知最小的x为312原创 2013-04-15 23:57:57 · 3115 阅读 · 1 评论 -
打印螺旋序列
题目:给定一个数N(N = M^2 - 1)输出0、1、……、N的螺旋序列,其中M为正整数。例如M为5时,输出如下序列。0 1 2 3 415 16 17 18 514 23 24 19 613 22 21 20 712 11 10 9 8 解法:考虑设定原创 2013-08-21 11:08:57 · 1211 阅读 · 0 评论