演算法學習之窮舉--泊松分酒詳細程式碼加註釋
阿新 • • 發佈:2018-12-13
1.窮舉思想簡述
窮舉法可謂是計算機程式設計中最經典也最為簡單的一種演算法,其依賴於計算機強大的計算能力來窮盡每一種可能存在的情況,從而達到問題的求解。另外,該法也被稱之為暴力求解法;實際上如果你願意的話,幾乎大多數問題都可以轉換為窮舉求解的過程,但因為窮舉演算法的效率不高,所以它一般被用於一些沒有明顯規律可循的場合。
2.演算法的執行流程
在使用窮舉法時,首先是明確問題答案的範圍,以便在指定範圍內搜尋答案。指定範圍以後,則可通過迴圈和條件判斷的方式逐個驗證每個答案,從而得出符合條件限定的正確答案。
原文:https://blog.csdn.net/a574780196/article/details/84038237
本人小白希望哪裡做的不好不對希望大佬們諒解
package sharewine; /* 泊松分酒 窮舉學習 大致理解思想就是不停的按照指定的規則去倒酒 直到匯出後停止 初始酒量: 12 0 0 12L 8L 5L 6L 制定一些計劃 1->2->3->1 1等2為空的時候再倒酒,2必須把3倒滿 ,3滿後才向1中到 */ public class ShareWine { private int b1=12; private int b2=8; private int b3=5; private int m=10;//目標酒量 private void backBottle(int bb1,int bb2,int bb3){ System.out.println("bb1:"+bb1+"---"+"bb2:"+bb2+"---"+"bb3:"+bb3); //首先判斷是否有條件成立的酒杯 if(bb1==m||bb2==m||bb3==m){ System.out.println("倒出了"+m); }else{ //第二個杯子為空了按照規定應從第一個杯子向第二個杯子到 if (bb2==0){ //第二個杯子能唄倒滿 if (bb1>=bb2){ backBottle(bb1-b2,b2,bb3); }else { backBottle(0,bb2+bb1,bb3); } }else if (bb3!=b3){ //第二個杯子不為空的時候 且第二杯中的酒倒向第三杯時能夠倒滿時 if (bb3+bb2>=b3){ backBottle(bb1,bb2-(b3-bb3),b3); //第二個杯子不能為空的時候,且第二杯想第三杯到的時候倒不滿 }else { backBottle(bb1,0,bb3+bb2); } //bb3中滿的時候 }else if (bb3==b3){ backBottle(bb1+b3,bb2,0); } } } public static void main(String[] args) { ShareWine a=new ShareWine(); a.backBottle(12,0,0); } }