java经典算法问题怎么解决
本篇内容介绍了“java经典算法问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
目前创新互联建站已为超过千家的企业提供了网站建设、域名、网页空间、网站托管、服务器租用、企业网站设计、淮滨网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
题目描述:
题目1:
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
题目2:
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
思路分析:
题1分析:
这道题既视感就像是做初三的物理题,有没有?但是这道题不需要考虑空气阻力,每次回弹是上一次高度的一半,其实到这里,就明白了[100,50,25,12,5,6,25...]。每一次高度是上一次的一半,则第二次就可以理解成,
h2 = 100,s1 = (h2+h2/2);
h3 = 50,s2 =(h3+h3/2);
h4 = 25,s3 =(h4+h4/2);
...
题2分析:
这题既视感就像是高中数学中的排列组合,题意就是要求四个不重复数字中,任何组合共有多少种且数字不重复,最直接的做法就是运用排列组合的逻辑思想,进行解答即可。
算法实现:
题1AC代码:
/** * 第count次小球落地,共经过多少米? */ public static MapsumLj(int count) { //用于记录距离与高度 Map map = new HashMap<>(); double s = 0; double h = 100; for (int i = 0; i <= count; i++) { //掉落的高度 s += h; //高度减半,顺便记录下一弹的高度 h = h / 2; //叠加弹上的高度 s += h; } //添加返回值 map.put("s", s); map.put("h", h); return map; }
题2AC代码:
public static Map plzh() { Map map = new HashMap<>(); //记录排列的每一个数字 Listlist = new ArrayList<>(); //记录排法 int count = 0; for (int i = 1; i <= 4; i++) { for (int j = 1; j <= 4; j++) { for (int k = 1; k <= 4; k++) { //数字不可重复使用 if (i != j && j != k && k != i) { //记录次数 count += 1; //排列数字 int temp = i * 100 + j * 10 + k; //添加数字 list.add(temp); } } } } map.put("count", count); map.put("list", list); return map; }
“java经典算法问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!
本文名称:java经典算法问题怎么解决
转载来于:http://cdiso.cn/article/johhio.html