笔试题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;
}




面试题 猫吃老鼠

明天,单位要来新人面试,以前的机试题,感觉太简单了,于是加工了一下,如下:             要求:请用面向对象的方法实现             题目:M只老鼠排成一圈,猫从第i只开始每隔N只...
  • AscCode
  • AscCode
  • 2013年11月18日 22:46
  • 1035

Java面试题:猫吃老鼠问题

 问题:现有n个老鼠围成一圆圈,有一只猫从任意位置开始吃老鼠,每次都隔一个老鼠吃,请给出最后一个老鼠的编号?题目要求是任给老鼠数n,输出猫最后吃的老鼠的编号。  我的解法:1.简单的方法就是模拟这个过...
  • zjhzyzc
  • zjhzyzc
  • 2009年10月29日 15:07
  • 1239

会抓老鼠的猫不一定是好猫

好猫一定会抓老鼠,但是会抓老鼠的猫不一定是好猫。 捉老鼠,本来是猫的天职,是主人赋予猫的责任。如果猫捉住老鼠之后,恃功而娇,在主人还吃不饱饭的时候,天天要主人给买汤姆牌高级猫粮,不给买就罢工不捉老鼠了...
  • aerchi
  • aerchi
  • 2016年06月24日 16:51
  • 631

猫吃老鼠问题

#define len sizeof(struct catmouse)struct catmouse{int num;struct catmouse *next;};void main(){struc...
  • stone1982
  • stone1982
  • 2004年03月15日 09:17
  • 533

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

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

猫抓老鼠--实验吧

猫抓老鼠 叫内容一排/瞎闹
  • dongyanwen6036
  • dongyanwen6036
  • 2017年09月01日 15:41
  • 513

猫捉老鼠游戏(Python)

用键盘方向键来控制老鼠,使其在猫的正前方 import turtle import time boxsize=200 caught=False score=0 #定义响应键盘消息的函数 def u...
  • u013232740
  • u013232740
  • 2015年07月20日 09:51
  • 794

猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)(观察者模式)

程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)要求:  1.要有联动性,老鼠和主人的行为是被动的。2.考虑可扩展性,猫的叫声可能引起其他联动效应。 要点:1. 联动效果,运行代...
  • fenghao_5555
  • fenghao_5555
  • 2007年03月29日 11:53
  • 3399

猫吃老鼠算法

曾经一道面试题, 大概意思是:有一只很强大的猫咪,喜欢把抓来的n只老鼠们排成一个队列,然后设一个步长值k,先吃掉第一只后,再每隔k只再吃, 吃完一轮后再按上面规则重新开始下一轮,直到剩下最后一只老...
  • chendeshan2
  • chendeshan2
  • 2011年11月22日 17:35
  • 437

猫吃老鼠 2

问题描述    现有n个老鼠围成一圆圈,有一只猫从编号为1 的位置开始吃老鼠,每次都隔n-1个老鼠吃一个,请给出最后一个老鼠的编号?题目要求是任给老鼠数i,输出猫最后吃的老鼠的编号。    (n>2)...
  • guj21
  • guj21
  • 2008年07月31日 14:08
  • 155
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:笔试题1--猫吃老鼠问题
举报原因:
原因补充:

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