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);
}
}