本篇內(nèi)容介紹了“java經(jīng)典算法問題怎么解決”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
目前創(chuàng)新互聯(lián)建站已為超過千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、淮濱網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
題目1:
一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地時(shí),共經(jīng)過多少米?第10次反彈多高?
題目2:
有1、2、3、4個(gè)數(shù)字,能組成多少個(gè)互不相同且無重復(fù)數(shù)字的三位數(shù)?都是多少?
這道題既視感就像是做初三的物理題,有沒有?但是這道題不需要考慮空氣阻力,每次回彈是上一次高度的一半,其實(shí)到這里,就明白了[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);
...
這題既視感就像是高中數(shù)學(xué)中的排列組合,題意就是要求四個(gè)不重復(fù)數(shù)字中,任何組合共有多少種且數(shù)字不重復(fù),最直接的做法就是運(yùn)用排列組合的邏輯思想,進(jìn)行解答即可。
題1AC代碼:
/** * 第count次小球落地,共經(jīng)過多少米? */ 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<>(); //記錄排列的每一個(gè)數(shù)字 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++) { //數(shù)字不可重復(fù)使用 if (i != j && j != k && k != i) { //記錄次數(shù) count += 1; //排列數(shù)字 int temp = i * 100 + j * 10 + k; //添加數(shù)字 list.add(temp); } } } } map.put("count", count); map.put("list", list); return map; }
“java經(jīng)典算法問題怎么解決”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!