java穷举密码_穷举算法和递推算法(Java)
穷举算法
概念:
最简单算法,依赖计算机的强大计算能力穷尽每一种可能的情况。穷举算法效率不高,但是适合一些没有明显规律可循的场合。
思想:
在使用穷举算法时,需要明确问题答案的范围,这样才可能在指定范围搜索答案。指定范围之后,就可以使用循环和条件判断语句进行逐步验证结果了。
案例:鸡兔同笼问题
在一个笼子里关着若干只鸡和若干兔子。一共有35个头,和94只脚。问在一个笼子里鸡和兔子各有多少个。
packagecmd.chengxuyuanzhilu.arithmetic;importjava.util.Scanner;/***@author微信公众号:程序员之路
* 博客:http://www.cnblogs.com/chengxuyuanzhilu/* 穷举算法*/
public classExhaustion {public static void exhaustion(int head,intfoot){intchicken,rabbit;for(chicken=0;chicken<= head;chicken++){
rabbit=head-chicken;if(chicken*2+rabbit*4 ==foot){
System.out.println(String.format("鸡有 %d只,兔子有%d只", chicken,rabbit));
}
}
}
@SuppressWarnings("resource")public static voidmain(String[] args) {inthead,foot;
System.out.println("穷举算法解决鸡兔同笼问题");
System.out.println("输入头的个数");
Scanner scanner= newScanner(System.in);
head=scanner.nextInt();
System.out.println("输入腿的个数");
foot=scanner.nextInt();
exhaustion(head, foot);
}
}
递推算法
概念:
递推算法在数学计算等方面广泛应用。递推算法适合有着明显规律的场合
思想:
递推算法往往需要用户知道答案和问题之间的逻辑关系。在许多数学问题中,都有着明显的计算公式可以遵循,因此可以采用递推算法。
案例:兔子产崽子的问题
如果有两个月大的兔子以后每个月都可以产一对小兔子,而一对小兔子出生两个月后可以在生小兔子,也就是1月份出生,3月份才可以产崽子。那么假定一年内没有发生死亡事件,那么现在有一对小兔子一年后共有多少对兔子。
案例分析:
1月1对兔子
2月1对兔子
3月2对兔子 一对成熟兔子
4月3对兔子
5月5对兔子 两对成熟兔子
6月8对兔子 三对成熟兔子
。。。。。。
规律:前两个月都是一对兔子,以后每个月的兔子的对数是前两个月的总和
除1,2月份的计算公式:n月Fn = (Fn-1)+(Fn-2)
packagecmd.chengxuyuanzhilu.arithmetic;importjava.util.Scanner;/***@author微信公众号:程序员之路
* 博客:http://www.cnblogs.com/chengxuyuanzhilu/* 递推算法*/
public classRecurrence {public static int recurrence(intmonths){if( months == 1 || months == 2){return 1;
}else{int m1 = recurrence(months-1);int m2 = recurrence(months-2);return m1+m2;
}
}
@SuppressWarnings("resource")public static voidmain(String[] args) {intmonths,rabbits;
System.out.println("递推算法解决兔子生崽子的问题");
System.out.println("输入月数");
Scanner scanner= newScanner(System.in);
months=scanner.nextInt();
rabbits=recurrence(months);
System.out.println(String.format("%d月共有兔子%d对", months,rabbits));
}
}
java穷举密码_穷举算法和递推算法(Java)相关推荐
- java递推_Java算法-递推算法思想
递推算法是常用的算法思想,在数学计算等方面有着广泛的应用.递推算法适合有着明显公式的规律场合. 一.递推算法基本思想 递推算法是一种理性思维模式的代表,其根据已有的数据和关系,逐步推导而得到结果.递推 ...
- 程序设计典型算法之递推法
程序设计典型算法之递推法 一时兴起,刚吃完晚饭,突然又想写点东西,可能太久没有写东西了吧! 问题:小猴吃桃问题.小猴在一天内摘了若干桃子,当天吃掉一半多一个:第二天吃掉剩下的一半桃子多一个:以后每天都 ...
- 递推算法与递推套路(手撕算法篇)
联系我们:有道技术团队助手:ydtech01 / 邮箱:[ydtech@rd.netease.com] 之前学习基础知识的时候也说了,递推和动态规划有这暧昧不清的关系,可以说,动态规划就是多了一个决策 ...
- 递推算法与递推套路(算法基础篇)
联系我们:有道技术团队助手:ydtech01 / 邮箱:[ydtech@rd.netease.com] 相信了解算法同学经常会说动态规划太难了,看到题目完全不知从何下手,或者是说"一看题解就 ...
- 递推java_Java算法-递推算法思想
递推算法是常用的算法思想,在数学计算等方面有着广泛的应用.递推算法适合有着明显公式的规律场合. 一.递推算法基本思想 递推算法是一种理性思维模式的代表,其根据已有的数据和关系,逐步推导而得到结果.递推 ...
- java实现数据结构基数排序_数据结构与算法——基数排序简单Java实现
1 packageahe.sort;2 3 importjava.io.BufferedReader;4 importjava.io.IOException;5 importjava.io.Input ...
- java学习文档_资深程序员带你深入了解JAVA知识点,实战篇,PDF文档
JAVA 集合JAVA 集合面对浩瀚的网络学习资源,您是否为很难找到适合自己的学习资源而感到苦恼过?那么,您来对地方了.在这里我们帮助大家整理了一份适于轻松学习 Java 文章的清单.JVM 文字太多 ...
- java时间规划书_【计算机本科补全计划】Java学习笔记(九) Java日期时间
正文之前 终于好像仿佛看完了菜鸟教程的Java课程,感觉自己收获颇丰!很好,Java看完之后正愁如何开始进阶呢!结果发现菜鸟还准备了Java实例这种好东西!简直就是教程界的良心啊 !!!没事,先写写笔 ...
- java无ide编译_[转]无IDE时编译和运行Java
本文由 ImportNew - Grey 翻译自 dzone.欢迎加入Java小组.转载请参见文章末尾的要求. 最近Java subreddit出现了一篇"在没有IDE的情况下编译Java包 ...
最新文章
- 实现后台检控并关闭进程的批处理
- 折纸机器人的步骤图解_折纸图解飞机
- 建立项目的webpack简单配置
- 我们的2009 梦想照进了现实
- UA SIE545 优化理论基础4 对偶理论简介5 对偶的几何解释
- javascript中setTimeout()函数
- Retrofit网络请求参数注解,@Path、@Query、@Post、Body等总结(超级实用)以及以Json格式和form-data格式提交数据
- CCNA,CCNP资料
- 过滤器过滤特定的url_如何从过滤器中排除URL
- 计算机二级web题目(5)--js(Javascript)基础
- python大学什么专业学校_好学校的差专业和一般大学的好专业,该怎么选?我来说真话……...
- [转]使用xcode4 workspace 多个project协同工作
- 操作系统—基本分页存储管理的基本概念
- Sketch 76 for mac(矢量绘图设计软件)
- 51Nod 1131 - 覆盖数字的数量(分类讨论)
- 2004-7-21/22+ DataGrid知识整理
- 项目管理计划_通用模板
- 项目经理应该知道的五种项目管理工具
- 少儿编程 电子学会图形化编程等级考试Scratch三级真题解析(判断题)2022年6月
- Python 三大神器:pip,virtualenv(virtualenvwrapper),fabric