本篇内容介绍了“java经典算法问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
题目1:
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
题目2:
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
这道题既视感就像是做初三的物理题,有没有?但是这道题不需要考虑空气阻力,每次回弹是上一次高度的一半,其实到这里,就明白了[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);
...
这题既视感就像是高中数学中的排列组合,题意就是要求四个不重复数字中,任何组合共有多少种且数字不重复,最直接的做法就是运用排列组合的逻辑思想,进行解答即可。
题1AC代码:
/** * 第count次小球落地,共经过多少米? */ public static Map<String, Double> sumLj(int count) { //用于记录距离与高度 Map<String, Double> 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<>(); //记录排列的每一个数字 List<Integer> list = 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经典算法问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。