围绕着山顶有10个洞,一只狐狸和一只兔子住在各自的洞里。狐狸想吃掉兔子。
一天,兔子对狐狸说:“你想吃我有一个条件,先把洞从1-10编上号,你从10号洞出发,
先到1号洞找我;第二次隔1个洞找我,第三次隔2个洞找我,以后依次类推,次数不限,若能找到我,
你就可以饱餐一顿。不过在没有找到我以前不能停下来。” 狐狸满口答应,就开始找了。它从早到晚进了1000次洞,
累得昏了过去,也没找到兔子,请问,兔子躲在几号洞里?

1、伪代码

// 数组实现

算法 FindRabbit(num, holeNum)

// 输入 num 为 fox 找的次数, holeNum为洞的个数

// 输出 没被访问hole

for i ← 1 to holeNumdo

hole[i]= 1

for i ← 1 and j = 0 to num do

j← j + i

ifj > 10

j← j %10

printj

hole[j]  = 1 // 把访问过的洞置为一

for i ← 1 to holeNumdo

ifhole[i] = 0

printi

// 递归实现

算法 FindRabbit(num)

// 输出 fox 已经找过的洞

// 输入 fox 找的次数

if num = 1return 1 //  fox 第一次找的是第一个洞

else

first ← find(num - 1) + num;

if first > 10

print first%10

return first;

2、效率分析

// 数组实现效率分析

该算法有三个for 循环,基本操作为赋值

C(n, m)=2   +   = 2m + n  O(m + n)

// 递归实现效率分析

通过分析 可以发现 递归式F(n) =F(n-1) + n  基本操作为赋值

而次数函数 为 C(n) = C(n-1) +1   C(1) = 1

可知 C(n) = n  O(n)

3、源代码

/**

*  狐狸找兔子

* @author chen

*/

public class Josephus {

public static void main(String[] args) {

int num = 1000;

int holeNum = 11;

// 数组 实现

findRabbit(num, holeNum);

// 递归实现

find(num);

}

/**

* 数组实现

* @param num

* @param holeNum

*/

public static void findRabbit(int num, int holeNum) {

int hole[] = new int[holeNum];

// 表示没被访问过

for (int i = 1; i < holeNum; i++) {

hole[i] = 0;

}

for (int i = 1, j = 0; i <= num; i++) {

j = j + i;

if (j > 10) {

j = j % 10;

}

System.out.println("第 " + i + " 次 , 找到 洞 " + j);

hole[j] = 1;

}

// 表示没被访问过

for (int i = 1; i < holeNum; i++) {

if (hole[i] == 0) {

System.out.println(i);

}

}

}

/**

*  减一法实现

* @param num

* @return

*/

public static int find(int num){

if(num == 1){

System.out.println("第  1  次 , 找到 洞 1");

return 1;

}else {

int first = find(num - 1) + num;

int hole = first;

if (hole > 10) {

hole = hole % 10;

}

System.out.println("第 " + num + " 次 , 找到 洞 " + hole);

return first;

}

}

}

狐狸找兔子(java 版)相关推荐

  1. java写 狐狸找兔子_狐狸找兔子(java 版)

    围绕着山顶有10个洞,一只狐狸和一只兔子住在各自的洞里.狐狸想吃掉兔子.一天,兔子对狐狸说:"你想吃我有一个条件,先把洞从1-10编上号,你从10号洞出发,先到1号洞找我:第二次隔1个洞找我 ...

  2. C语言中狐狸找兔子的问题

    狐狸找兔子的问题 围绕着山顶有10个洞,一只兔子和一只狐狸住在各自的洞里,狐狸总想吃掉兔子,一天兔子对狐狸说,你想吃我有一个条件,你先把洞编号1到10,你从第10洞出发,先到第1号洞找我,第二次隔一个 ...

  3. C++经典问题:狐狸找兔子

    问题描述: 围绕着山顶有10个洞,一只狐狸和一只兔子住在各自的洞里.狐狸想吃掉兔子.一天,兔子对狐狸说:"你想吃我有一个条件,先把洞从1-10编上号,你从10号洞出发,先到1号洞找我:第二次 ...

  4. java写 狐狸找兔子_狐狸找兔 算法分析

    题目: 围绕着山顶有10个洞,一只兔子和一只狐狸住在各自的洞里,狐狸总想吃掉兔子,一天兔子对狐狸说,你想吃我有一个条件,你先把洞编号1到10,你从第10洞出发,先到第1号洞找我,第二次隔一个洞找我,第 ...

  5. 狐狸与兔子 java,兔子夫妇和狐狸夫妇的爱情

    兔子太太今天不开心,即使回到家见到亲爱的兔子先生依然不开心. 兔子先生今天很高兴,兴致勃勃的想告诉太太他升职了每个礼拜可以多挣一筐胡萝卜. 可是他亲爱的兔子太太不开心,他很惊慌是不是他做错了什么. 于 ...

  6. 力扣860题 柠檬水找零 Java版

    class Solution {public boolean lemonadeChange(int[] bills) {// 五元张数int five = 0;// 十元张数int ten = 0;f ...

  7. C语言狐狸与兔子编程,狐狸找兔子(VB程序设计)

    满意答案 唯一手记 2013.08.17 采纳率:57%    等级:12 已帮助:2085人 楼主 这时一段根据题目出的查找程序,但是有一定的问题 mumber = 0 这句应该说number=0还 ...

  8. 【经典算法】:狐狸抓兔子问题

    前言 问题见百度 狐狸抓兔子问题 代码 全在注释里面了,没啥好说的 // 狐狸找兔子问题 // author:seen // time:2015-09-20#include <iostream& ...

  9. java版溺尸掉三叉戟吗_我的世界:得不到溺尸的三叉戟怎么办?概率太低,版本要求不同!...

    在沙盒游戏我的世界中,三叉戟是海洋版本所添加的一个装备,可附魔,使其成为近战和远攻"两用"武器.可惜的是玩家们想要得到溺尸手中的三叉戟居然这么困难,有的玩家辛辛苦苦地击杀一两百个溺 ...

  10. java版溺尸掉三叉戟吗_我的世界:拿个装备也要看概率?想要溺尸的三叉戟居然这么困难!...

    虽然玩家们遇到普通类型的溺尸不用害怕,但是看见拿着三叉戟的溺尸就要当心了,它们携带的三叉戟有一定的概率带有魔咒,关键是溺尸拥有无限的三叉戟可供它们投掷,接二连三地扔出三叉戟攻击玩家们,有一种背脊发凉的 ...

最新文章

  1. Redis入门到精通-Redis高级命令
  2. java 如何把源码导出为jar包,以及如何使用导出的jar包
  3. 大侠稍等!URL 中为何出现奇怪的字符
  4. xtrabackup部分备份数据库 Partial Backups
  5. centos7下安装nginx及常用命令
  6. XBMC Skinning Manual
  7. 自适应各终端懒人泽客导航源码v2.6 无后门
  8. 整洁代码--写好注释
  9. 物质环境、符号还是认知模型?——谈韩礼德、马丁、范迪克的语境观
  10. 在PS中,1PX等于多少毫米?
  11. 一文教你如何在Linux系统上搭建samba文件共享服务器
  12. 分享| 三款在线临时文件分享工具,无需注册
  13. c语言自定义函写计算器,C语言实现计算器功能
  14. JIRA实践基础(1):JIRA-Software安装与设定
  15. jaeger 是很么软件_开源分布式跟踪系统Jaeger介绍 (六步快速上手)
  16. Java面试宝典(2021版)
  17. hcaptcha 我是人类验证码怎么跳过怎么验证自动识别
  18. 2023养老展,中福协养老展,中国国际养老服务业博览会
  19. android混淆简单教程
  20. 汉字对应的ASCLL

热门文章

  1. windows 7 数据执行保护 开启关闭方法
  2. java用zipOutputStream压缩后用WinRAR解压出现“不可预料的压缩文件末端”错误
  3. vsftp创建虚拟账户
  4. Unity -- UI -- Scroll Rect
  5. 皮肤水分检测原理及测量电路分析
  6. 李白的诗: 南陵别儿童入京
  7. 全手工杂拌面——韩国才有的中华料理 冬至餐桌上的25道家常手工主食
  8. CoLA任务的数据增强方法
  9. PIM是什么意思,如何做好企业产品信息管理?
  10. CSS写一个实心小圆点的样式