本篇内容介绍了“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经典算法问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://blog.51cto.com/u_15700799/5722464