笔试题1--猫吃老鼠问题

原创 2012年03月29日 22:21:31

题目:

     有N个老鼠,排成一队,按顺序,1,2....N  。一只猫从任意位置开始吃,每隔一个吃一个,循环吃。例如:

    老鼠有1,2,3,4,5,6,7个,从第二个开始吃,则吃的顺序为:2,4,6,1,5,3,7


思路:

    从某一个位置first开始吃的话,间隔一个在next处继续吃。那么这道题关键是要找到下一个开始吃的位置在哪里。

   可能遇到的情况,first与next间间隔为1,这个1指的是没有被吃掉的老鼠数目为1个,而不是我们认为的间隔距离为1,这里间隔距离可能有多个。

   现在就有如下问题,如何确定开始的位置?如何查找下一个位置?如何设置循环次数?

  1 开始位置已经给定

  2下一个位置那么我们就需要遍历开始位置后面的位置,如果有老鼠,那么ok,那么该老鼠我不处理,但是邻近该老鼠的下一个我会吃掉它。那么这时候就需要设置一个变量,来记录哪些老鼠可以吃,哪些不可以吃。所以设置一个eat_interval间隔标志,当我吃了一个老鼠,那么间隔标志为0,我遍历邻近的位置,找到一个没有吃的老鼠,此时我不吃它,但是间隔标志变为1,下一个就是可以吃掉的了。

3 没吃掉一个总次数减一,我用总次数做循环变量

 

代码如下:

#include "stdafx.h"
#include "stdio.h"
#define N 4
void Mouse_eat(int *Array,int Number,int start)
{
	int eat_interval = 1;
	int n = Number;
	while(n)
	{
		if(Array[start]&&eat_interval==1)
		{
			printf("%d \t",start);
			Array[start] =0;
			eat_interval = 0;
			start=(start+1)%Number;
			n--;
		}
		else if(Array[start]&&eat_interval==0)
		{
			start=(start+1)%Number;
			eat_interval =1;
		}
		else if(!Array[start])
		{
			start=(start+1)%Number;	
		}
		
		
	}
}
int main(int argc, char* argv[])
{
	int Array[N];
	int i=0;
	int start =1;
	for(i=0;i<N;i++)
	{
		Array[i] = 1;
	}
	Mouse_eat(Array,N,start);

	return 0;
}




微软笔试题-老鼠与毒药

有1000个一模一样的瓶子,其中有999瓶是普通的水,有1瓶是毒药。任何喝下毒药的生命都会在一星期之后死亡。现在你只有10只小白鼠和1个星期的时间,如何检验出哪个瓶子有毒药?   解答:把瓶子从 ...
  • ryvipa
  • ryvipa
  • 2013年04月06日 16:31
  • 1554

老鼠走迷宫问题(2016百度机试题)

问题: 在迷宫某处放一大块奶酪,把一只老鼠Mooshak放入迷宫。 迷宫以二维数组表示,0表示墙,1表示Mooshak可以移动的路径。9表示一大奶酪。Mooshak从迷宫左上角(0,0)开始移动。  ...

猫大叫一声 主人被惊醒 老鼠被下跑 (C#经典案例面试题)

猫大叫一声,主人被惊醒,老鼠被下跑。用C#实现这个过程。该题目经常被C#.net面试中设计成重要面试设计题,不管是用C#实现该过程还是抽象成一个game原型,仔细想想这个场景是不是跟老板监视办公室员工...

猫捉老鼠问题系列(一)

形象化的数学问题,总是引人入胜,这个世界创意还是很重要的。 从网上收集了一些猫和老鼠的数学话题,仅供欣赏之。 -----------------------------------------...
  • Suprman
  • Suprman
  • 2012年10月05日 13:10
  • 1630

第九届北京高中数学知识应用竞赛初赛——猫抓老鼠问题

第九届北京高中数学知识应用竞赛初赛 第二题原题:一只老鼠为了躲避猫的追捕,跳入了半径为R的圆形湖中.猫不会游泳,只能沿湖岸追击,并且总是试图使自己离老鼠最近(即猫总是试图使自己在老鼠离岸最近的点上)。...

昊学昊思系列(一)——猫吃老鼠篇

第一章 一条直线 有一天,Tom抓了100只老鼠,很不幸,Jerry也在其中。Tom决定把老鼠排成一条直线,从1到100号编了号,从1号开始,吃一个隔一个,从排头吃到排尾,下一轮继续从排头开始,直到...
  • novelly
  • novelly
  • 2012年02月03日 21:03
  • 1699

C#笔试题汇总C#常见的问题

  • 2011年03月25日 14:02
  • 125KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:笔试题1--猫吃老鼠问题
举报原因:
原因补充:

(最多只允许输入30个字)