数据结构与算法之穷举法
来源:互联网 发布:淘宝人气增长 编辑:程序博客网 时间:2024/06/05 23:42
1 泊松分酒算法
1.1 核心思想
按A->B->C顺序分倒操作
(1)当B杯空(bb2=0)时,从A杯往B杯里倒酒。
(2)当B杯不为空、C杯未满(bb2!=0 && bb3!=C)时,从B杯分一次或多次倒满C杯。
(3)当C杯满了(bb3==C)时,从C杯倒回A瓶
1.2 演示图
(1)步骤解析
// A杯:12 B杯:0 C杯:0 // A杯:4 B杯:8 C杯:0 (1)// A杯:4 B杯:3 C杯:5 (2)// A杯:9 B杯:3 C杯:0 (3)// A杯:9 B杯:0 C杯:3 (2)// A杯:1 B杯:8 C杯:3 (1)// A杯:1 B杯:6 C杯:5 (2)// find the bottle
1.3 源码
package com.dn.sharewine;/** * 泊松分酒算法 * * 按A->B->C顺序分倒操作 (1)当B杯空(bb2=0)时,从A杯往B杯里倒酒。 (2)当B杯不为空、C杯未满(bb2!=0 && bb3!=C)时,从B杯分一次或多次倒满C杯。 (3)当C杯满了(bb3==C)时,从C杯倒回A瓶。 * */public class ShareWine { private int A = 12;// A酒杯容量 private int B = 8;// B酒杯容量 private int C = 5;// C酒杯容量 private int m = 6;// 目标酒量 // 假设一开始12,0,0 private void backBottle(int bb1, int bb2, int bb3) { System.out.println("A杯:" + bb1 + " B杯:" + bb2 + " C杯:" + bb3); //当其中一个杯的酒量等于目标酒量完成 if (bb1 == m || bb2 == m || bb3 == m) { System.out.println("find the bottle"); return; } if (bb2 != 0 && bb3 != C) {// (2)当B杯不为空、C杯未满(bb2!=0 && bb3!=C)时,从B杯分一次或多次倒满C杯。 if (bb2 + bb3 <= C) {// 倒不满C杯 backBottle(bb1, 0, bb2 + bb3); } else { backBottle(bb1, bb2 - (C - bb3), C); } } else if (bb3 == C) {// (3)当C杯满了(bb3==C)时,从C杯倒回A瓶。 if (bb3 + bb1 <= A) {// 说明倒完后A杯没满 backBottle(bb1 + bb3, bb2, 0); } else { backBottle(A, bb2, bb3 - (A - bb1)); } } else if (bb2 == 0) {// (1)当B杯空(bb2=0)时,从A杯往B杯里倒酒。 if (bb1 >= B) { backBottle(bb1 - B, B, bb3); } else { backBottle(0, bb1, bb3); } } } public static void main(String[] args) { ShareWine shareWine = new ShareWine(); shareWine.backBottle(12, 0, 0); }}
0 0
- 数据结构与算法之穷举法
- 数据结构与算法之枚举(穷举)法 C++实现
- 算法思想之穷举法
- 计算机算法之穷举法
- 数据结构和算法设计专题之---24点游戏(穷举法和递归法)
- 再试算法----穷举法
- 算法设计之—直接 遍历/穷举法、贪心算法
- 基础算法学习之穷举
- 穷举法与递归
- 算法设计基本方法之穷举法/试探法
- 常用算法设计方法之穷举搜索法
- 基本算法思想之穷举法(C++语言描述)
- 穷举法之韩信点兵
- 算法学习笔记之穷举算法
- (初学者)求最大公约数与最小公倍数之穷举法
- 常用算法 --- 穷举搜索法
- 勤劳的算法-穷举法
- C++算法封装:穷举法
- ios 在View里push或者presentViewController
- Java zip压缩
- Centos下使用scp传输文件
- 平衡二叉树
- JavaScript笔记
- 数据结构与算法之穷举法
- java获取机器名及所有网卡IP
- <a>标签中onclick和href
- Nginx 反向代理Tomcat
- MyBatis学习笔记04
- Android 双Text_Text赋值公共类
- 闭包原理--逐步改进加理解
- 内部类
- android解决genymotion模拟器无法下载虚拟机问题