跳格子问题——阿里笔试

有1,2,3,......无穷个格子,你从1号格子出发,每次1/2概率向前跳一格,1/2概率向前跳两格,走到格子编号为4的倍数时结束,结束时期望走的步数为____。

  • 2
  • 12/5
  • 14/5
  • 16/5
  • 18/5
  • 4

这个问题,很显然考察的是递归问题:

定义step(i,j)为第i号格子带第j号格子的期望值;

step(1,4)为从第一格跳到第四格的期望,要到第四格,则只能先到第二格(期望0.5*(step(1,2)+1))或者是第三格(期望0.5*(step(1,3)+1));其中1表示到达第2格或者第3个之后,跳到第4格还需要1步。

故有

step(1,4)=0.5*(step(1,2)+1)+0.5*(step(1,3)+1)=1+0.5*(step(1,2)+step(1,3))

同理有

step(1,3)=1+0.5*step(1,1)+0.5*step(1,2)

step(1,2)=1+0.5*step(1,1)+0.5*step(1,4)

step(1,1)=0

联立方程,得到

step(1,4)期望为18/5,选E。

也可以用计算机求概率,如:

/**
 *  项目名称:
 *  文件说明:
 *  主要特点:
 *  版本号:1.0
 *  制作人:lcx
 *  创建时间:2015-8-25
 **/

/**
 * @author lcx
 *
 */
public class PaceTest {

	static Random rand=new Random();
	public static int pace()
	{
		return (int) (rand.nextDouble()*2+1);
	}

	public static void main(String[] args) {
		double sum=0;
		int times=10000;//实验10000次
		for(int i=0;i<times;i++)
		{
			int index=1;
			int pace=0;
			while(index%4!=0)
			{
				index+=pace();
				pace++;
			}
			sum+=pace;
		}
		System.out.println("期望值为: "+sum/times);
	}
}

追问1,若本题是从2开始,则期望多少?

同样的方法:

step(2,4)=1+0.5*step(3,4)

step(2,3)=0.5+0.5*(1+step(2,1))

step(2,1)=1+0.5*step(2,3)+0.5*step(2,4)

step(2,2)=0

最终求出

step(2,4)=12/5

追问2,若本题是3的倍数就停止,则期望为多少?

同样方法计算,期望值为2。

本题归根到底是利用递归思想。类似的题目还有青蛙跳问题、摆瓷砖问题(编程之美)等。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 12:04:57

跳格子问题——阿里笔试的相关文章

腾讯、阿里笔试面试体会

最近这个月参加阿里.腾讯2014实习生招聘,收获很多,得到了教训,吸收了经验,清楚了方向,现在就具体说说吧 1.阿里巴巴实习招聘:出于一颗打酱油的心情和几个小伙伴去投了简历,过了几天通知笔试,心里很虚,没什么准备,考试内容主要是网络有1题.数据结构.程序阅读题.Linux命令题.指针内存.操作系统题目,数据结构和程序阅读题很多,倒数第二题找出一个二分查找法的bug,考完出来心想肯定挂了,有些数据结构的题不会,如求取叶子节点的个数(忘记公式了),就在我以为挂定了时候,过了5天左右尽然通知我面试,有

某次阿里笔试不会做的一道数学题【组合数学】

某次投了阿里算法岗玩,有一道题是这样的: 某张试卷有20题,做对一个得5分,做错一个得-3分,不做得0分.问:最后得分有几种情况? 随便写个程序暴力算一下即可. 那么如果范围比较大应该怎么办? 今天看<组合数浅谈>(王连笑著,哈尔滨工业大学出版社)里有讲解法. 设有n道题,评分标准如下:每道题答对得p分,答错扣q分,不答得0分,p, q ∈ N+, 且p, q互质,问:不同的成绩最多有几种? 题解: 设答对x题,答错y题,不答z题,那么显然 x+y <= n,直线左下角在第一象限内围成的

阿里笔试算法题之词的匹配

词的匹配 阿里巴巴笔试 有一个字符串它的构成是词+空格的组合,如"北京 杭州 杭州 北京", 要求输入一个匹配模式(简单的以字符来写). 比如 aabb,来判断该字符串是否符合该模式, 举个例子: pattern = "abba", str="北京 杭州 杭州 北京" 返回 ture pattern = "aabb", str="北京 杭州 杭州 北京" 返回 false pattern = "b

阿里笔试编程题——根据商品编号排序(多级排序)

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #e4af0a; min-height: 14.0px } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; f

阿里笔试之最长公共子串

题目描述:给定一个query和一个text,均由小写字母组成.要求在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度.例如,query为"acbac",text为"acaccbabb",那么text中的"cba"为最长的连续出现在query中的字母序列,因此,返回结果应该为其长度3.请注意程序效率. 思路:用一个矩阵来记录两个字符串中所有位置的两个字符之间的匹配情况,若是匹配则为1,否则为0.然后求出对角线最长的1序列,其

阿里笔试——获取格子编号

昨天晚上朋友给发过来看的题,感觉有点意思就尝试了一下,题目如下: 菜鸟仓库是一个很大很神奇的地方,各种琳琅满目的商品整整齐齐地摆放在一排排货架上,通常一种品类(sku)的商品会放置在货架的某一个格子中,格子设有统一的编号,方便工人们拣选.有一天沐哲去菜鸟仓库参观,无意中发现第1个货架格子编码为1,第2-3个分别为1,2,第4-6个格子分别是1,2,3,第7-10个格子编号分别是1,2,3,4,每个格子编号都是0-9中的一个整数,且相邻格子的编号连在一起有如下规律1|12|123|1234|...

阿里-笔试-评测

忘了具体是啥题目了.类似与求最小编辑距离. 第一行:输入的行数: 后面是输入的记录和关键字: 如:第一行:2 后面:search_dress_in_11:30_search_drese_in_11:31 dress search_dress_in_11:30_search_drese_in_11:31 glass 输出:最小编辑距离为1的字符串的起始位置,没有返回-1 7 29 -1 反正我是不知道我怎么错的.即使是输出格式,也不可能一个负用例都没有把.很奇怪. 1 // 2 // Create

阿里笔试题目 “学java”

当选择gbk编码时,长度是6 gbk中汉子一个字节,字母也是一个字节,再加上字符串结尾标记'\0' 占一个字节,总共6个字节 当选择utf8编码时,长度是7 utf8中汉子两个字节,字母一个字节,再加上字符串结尾标记'\0' 占一个字节,总共7个字节 这道题是一道选择题,没说多选,不知道有何用意 版权声明:本文为博主原创文章,未经博主允许不得转载.

阿里笔试1

package sort; import java.util.ArrayList; import java.util.Scanner; public class Gongyi { public static void main(String[] args) { // TODO Auto-generated method stub // //第一行,表示马老师下个月的空闲时间段.注意:一天内只会有一个连续空闲时间段. 格式为"day:hs-he:loc",其中day为当月的x日,hs表示