#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import numbers
import numpy
import math

'''
三个容器分别为12升、8升、5升,初始时12升容器盛满酒,就只能在三个容器中来回倾倒,如某容器中恰好6升就,则结束
3*2维数组:三个二维数组表示三个容器;二维数组第一个数字表示容器大小,第二数字表示当前容器中的酒量
结束条件:前两个二维数组中第二个数字为6
倒酒的动作:两个数组A,B之间,第一个向第二个倒酒
B[1]=B[0]或A[1]=0不操作
若A[1]+B[1]>=B[0],则A[1]=A[1]+B[1]-B[0],B[1]=B[0]
若B[0]>A[1]+B[1],则B[1]=A[1]+B[1],A[1]=0
到酒后的动作:记录三个容器中的酒量到队列:若任意一个等于6则打印返回;
若队列中与当结果不存在重复,则继续下一个倒酒动作

每个状态有六种倒酒操作:1-》2 ,1-》3,2-》3,2-》1,3-》1,3->2
'''

#initstatus=[[12,2],[8,5],[5,5]]

class purewine(object):
def __init__(self):
pass

def purewine(self,A,B,a,b):
if a + b >= B:
a = a + b - B
b = B
else:
b = a + b
a = 0
return A,B,a,b

def judge(self,A,B,C,a,b,c,t='',r=0):
restr=str(a)+str(b)+str(c)
if a==r or b==r or c==r:
t=t+','+restr
print(t)
return True
else:
if t.count(restr)<1:
t = t + ',' + restr
self.dynamictree(A,B,C,a,b,c,t,r)

def dynamictree(self,A,B,C,a,b,c,t='',r=0):

j,k,m,n=self.purewine(A,B,a,b,)
self.judge(j,k,C,m,n,c,t,r)

j,k,m,n = self.purewine(A, C, a, c)
self.judge(j, B, k, m, b, n, t, r)

j, k, m, n = self.purewine(B, C, b, c)
self.judge(A, j, k, a, m, n, t, r)

j, k, m, n = self.purewine(C, B, c, b)
self.judge(A, k, j, a, n, m, t, r)

j, k, m, n = self.purewine(C, A, c, a)
self.judge(k, B, j, n, b, m, t, r)

j, k, m, n = self.purewine(B, A, b, a)
self.judge(k, j, C, n, m, c, t, r)

wins=purewine()
wins.dynamictree(12,8,5,12,0,0,'1200',6)
输出:

1200,480,084,804,840,345,381,1101,1110,615
1200,480,435,075,084,804,840,345,381,1101,1110,615
1200,480,435,075,570,525,1020,1002,282,084,804,840,345,381,1101,1110,615
1200,480,435,075,570,525,1020,1002,705,750,255,282,084,804,840,345,381,1101,1110,615
1200,480,435,075,570,525,705,750,255,282,084,804,840,345,381,1101,1110,615
1200,480,435,075,705,750,255,282,084,804,840,345,381,1101,1110,615
1200,480,435,930,903,183,084,804,840,345,381,1101,1110,615
1200,480,435,930,903,183,165
1200,480,435,930,903,705,075,084,804,840,345,381,1101,1110,615
1200,480,435,930,903,705,075,570,525,1020,1002,282,084,804,840,345,381,1101,1110,615
1200,480,435,930,903,705,750,255,075,084,804,840,345,381,1101,1110,615
1200,480,435,930,903,705,750,255,075,570,525,1020,1002,282,084,804,840,345,381,1101,1110,615
1200,480,435,930,903,705,750,255,282,084,804,840,345,381,1101,1110,615
1200,480,435,930,903,705,750,255,282,1002,1020,525,075,084,804,840,345,381,1101,1110,615
1200,480,435,930,903,705,750,255,282,1002,1020,525,570,075,084,804,840,345,381,1101,1110,615
1200,480,435,705,075,084,804,840,345,381,1101,1110,615
1200,480,435,705,075,570,525,1020,1002,282,084,804,840,345,381,1101,1110,615
1200,480,435,705,750,255,075,084,804,840,345,381,1101,1110,615
1200,480,435,705,750,255,075,570,525,1020,1002,282,084,804,840,345,381,1101,1110,615
1200,480,435,705,750,255,282,084,804,840,345,381,1101,1110,615
1200,480,435,705,750,255,282,1002,1020,525,075,084,804,840,345,381,1101,1110,615
1200,480,435,705,750,255,282,1002,1020,525,570,075,084,804,840,345,381,1101,1110,615
1200,705,075,084,480,435,930,903,183,165
1200,705,075,084,804,840,480,435,930,903,183,165
1200,705,075,084,804,840,345,381,480,435,930,903,183,165
1200,705,075,084,804,840,345,381,1101,1110,480,435,930,903,183,165
1200,705,075,084,804,840,345,381,1101,1110,615
1200,705,075,570,480,084,804,840,345,381,1101,1110,615
1200,705,075,570,480,435,930,903,183,084,804,840,345,381,1101,1110,615
1200,705,075,570,480,435,930,903,183,165
1200,705,075,570,525,1020,480,084,804,840,345,381,1101,1110,615
1200,705,075,570,525,1020,480,435,930,903,183,084,804,840,345,381,1101,1110,615
1200,705,075,570,525,1020,480,435,930,903,183,165
1200,705,075,570,525,1020,1002,282,084,480,435,930,903,183,165
1200,705,075,570,525,1020,1002,282,084,804,840,480,435,930,903,183,165
1200,705,075,570,525,1020,1002,282,084,804,840,345,381,480,435,930,903,183,165
1200,705,075,570,525,1020,1002,282,084,804,840,345,381,1101,1110,480,435,930,903,183,165
1200,705,075,570,525,1020,1002,282,084,804,840,345,381,1101,1110,615
1200,705,075,570,525,1020,1002,282,255,750,480,084,804,840,345,381,1101,1110,615
1200,705,075,570,525,1020,1002,282,255,750,480,435,930,903,183,084,804,840,345,381,1101,1110,615
1200,705,075,570,525,1020,1002,282,255,750,480,435,930,903,183,165
1200,705,075,570,525,1020,1002,282,480,084,804,840,345,381,1101,1110,615
1200,705,075,570,525,1020,1002,282,480,435,930,903,183,084,804,840,345,381,1101,1110,615
1200,705,075,570,525,1020,1002,282,480,435,930,903,183,165
1200,705,750,480,084,804,840,345,381,1101,1110,615
1200,705,750,480,435,075,084,804,840,345,381,1101,1110,615
1200,705,750,480,435,075,570,525,1020,1002,282,084,804,840,345,381,1101,1110,615
1200,705,750,480,435,930,903,183,084,804,840,345,381,1101,1110,615
1200,705,750,480,435,930,903,183,165
1200,705,750,255,075,084,480,435,930,903,183,165
1200,705,750,255,075,084,804,840,480,435,930,903,183,165
1200,705,750,255,075,084,804,840,345,381,480,435,930,903,183,165
1200,705,750,255,075,084,804,840,345,381,1101,1110,480,435,930,903,183,165
1200,705,750,255,075,084,804,840,345,381,1101,1110,615
1200,705,750,255,075,570,480,084,804,840,345,381,1101,1110,615
1200,705,750,255,075,570,480,435,930,903,183,084,804,840,345,381,1101,1110,615
1200,705,750,255,075,570,480,435,930,903,183,165
1200,705,750,255,075,570,525,1020,480,084,804,840,345,381,1101,1110,615
1200,705,750,255,075,570,525,1020,480,435,930,903,183,084,804,840,345,381,1101,1110,615
1200,705,750,255,075,570,525,1020,480,435,930,903,183,165
1200,705,750,255,075,570,525,1020,1002,282,084,480,435,930,903,183,165
1200,705,750,255,075,570,525,1020,1002,282,084,804,840,480,435,930,903,183,165
1200,705,750,255,075,570,525,1020,1002,282,084,804,840,345,381,480,435,930,903,183,165
1200,705,750,255,075,570,525,1020,1002,282,084,804,840,345,381,1101,1110,480,435,930,903,183,165
1200,705,750,255,075,570,525,1020,1002,282,084,804,840,345,381,1101,1110,615
1200,705,750,255,075,570,525,1020,1002,282,480,084,804,840,345,381,1101,1110,615
1200,705,750,255,075,570,525,1020,1002,282,480,435,930,903,183,084,804,840,345,381,1101,1110,615
1200,705,750,255,075,570,525,1020,1002,282,480,435,930,903,183,165
1200,705,750,255,282,084,075,570,480,435,930,903,183,165
1200,705,750,255,282,084,075,570,525,1020,480,435,930,903,183,165
1200,705,750,255,282,084,480,435,930,903,183,165
1200,705,750,255,282,084,804,840,480,435,930,903,183,165
1200,705,750,255,282,084,804,840,345,075,570,480,435,930,903,183,165
1200,705,750,255,282,084,804,840,345,075,570,525,1020,480,435,930,903,183,165
1200,705,750,255,282,084,804,840,345,381,480,435,930,903,183,165
1200,705,750,255,282,084,804,840,345,381,1101,1110,480,435,930,903,183,165
1200,705,750,255,282,084,804,840,345,381,1101,1110,615
1200,705,750,255,282,480,084,804,840,345,381,1101,1110,615
1200,705,750,255,282,480,435,075,084,804,840,345,381,1101,1110,615
1200,705,750,255,282,480,435,930,903,183,084,804,840,345,381,1101,1110,615
1200,705,750,255,282,480,435,930,903,183,165
1200,705,750,255,282,1002,1020,480,084,804,840,345,381,1101,1110,615
1200,705,750,255,282,1002,1020,480,435,075,084,804,840,345,381,1101,1110,615
1200,705,750,255,282,1002,1020,480,435,930,903,183,084,804,840,345,381,1101,1110,615
1200,705,750,255,282,1002,1020,480,435,930,903,183,165
1200,705,750,255,282,1002,1020,525,075,084,480,435,930,903,183,165
1200,705,750,255,282,1002,1020,525,075,084,804,840,480,435,930,903,183,165
1200,705,750,255,282,1002,1020,525,075,084,804,840,345,381,480,435,930,903,183,165
1200,705,750,255,282,1002,1020,525,075,084,804,840,345,381,1101,1110,480,435,930,903,183,165
1200,705,750,255,282,1002,1020,525,075,084,804,840,345,381,1101,1110,615
1200,705,750,255,282,1002,1020,525,075,570,480,084,804,840,345,381,1101,1110,615
1200,705,750,255,282,1002,1020,525,075,570,480,435,930,903,183,084,804,840,345,381,1101,1110,615
1200,705,750,255,282,1002,1020,525,075,570,480,435,930,903,183,165
1200,705,750,255,282,1002,1020,525,570,480,084,804,840,345,381,1101,1110,615
1200,705,750,255,282,1002,1020,525,570,480,435,075,084,804,840,345,381,1101,1110,615
1200,705,750,255,282,1002,1020,525,570,480,435,930,903,183,084,804,840,345,381,1101,1110,615
1200,705,750,255,282,1002,1020,525,570,480,435,930,903,183,165
1200,705,750,255,282,1002,1020,525,570,075,084,480,435,930,903,183,165
1200,705,750,255,282,1002,1020,525,570,075,084,804,840,480,435,930,903,183,165
1200,705,750,255,282,1002,1020,525,570,075,084,804,840,345,381,480,435,930,903,183,165
1200,705,750,255,282,1002,1020,525,570,075,084,804,840,345,381,1101,1110,480,435,930,903,183,165
1200,705,750,255,282,1002,1020,525,570,075,084,804,840,345,381,1101,1110,615

python ---倒酒!!的更多相关文章

  1. Jams倒酒

    Jams是一家酒吧的老板,他的酒吧提供2种体积的啤酒,a ml 和 b ml,分别使用容积为a ml 和 b ml的酒杯来装载. 酒吧的生意并不好.Jams发现酒鬼们都很穷,不像他那么土豪.有时,他们 ...

  2. Jams倒酒(pour)

    1.Jams倒酒(pour) Jams是一家酒吧的老板,他的酒吧提供2种体积的啤酒,a ml 和 b ml,分别使用容积为a ml 和 b ml的酒杯来装载. 酒吧的生意并不好.Jams发现酒鬼们都很 ...

  3. P1292 倒酒

    P1292 倒酒这个题有很多模型,这个是一个变形.我令一个解为x两个整数Pa和Pb,分别表示从体积为a ml的酒杯中倒出酒的次数和将酒倒入体积为b ml的酒杯中的次数(酒杯一开始为空).b最后是0,所 ...

  4. 洛谷——P1292 倒酒

    P1292 倒酒 题目描述 Winy是一家酒吧的老板,他的酒吧提供两种体积的啤酒,a ml和b ml,分别使用容积为a ml和b ml的酒杯来装载. 酒吧的生意并不好.Winy发现酒鬼们都非常穷.有时 ...

  5. 洛谷 P1292 倒酒

    题目描述 Winy是一家酒吧的老板,他的酒吧提供两种体积的啤酒,a ml和b ml,分别使用容积为a ml和b ml的酒杯来装载. 酒吧的生意并不好.Winy发现酒鬼们都非常穷.有时,他们会因为负担不 ...

  6. 洛谷题解 P1292 【倒酒】

    原题传送门 题目描述 Winy是一家酒吧的老板,他的酒吧提供两种体积的啤酒,a ml和b ml,分别使用容积为a ml和b ml的酒杯来装载. 酒吧的生意并不好.Winy发现酒鬼们都非常穷.有时,他们 ...

  7. Python倒计时器(转)

    # Countdown using Tkinter from Tkinter import * import time import tkMessageBox class App: def __ini ...

  8. Python 倒叙切片

    倒序切片 对于list,既然Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片,试试: >>> L = ['Adam', 'Lisa', 'Bart', 'Paul' ...

  9. 华哥倒酒<区间标记,二分>

    题目链接 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; t ...

随机推荐

  1. HTTP基本原理-Network各列标签的含义

    第一列 Name:请求的名称,一般会将URL的最后一部分内容当作名称 第二列 Status:响应的状态码,显示为 200,则代表相应是正常的.通过状态码,我们可以判断发送了请求之后是否得到了正常的相应 ...

  2. linux计算命令

    1.在lammps中通过car文件导出data文件 (进入工作目录xxx cd xxx/ msi2lmp.exe xxx -class I -frc clayff -i -ignore > ou ...

  3. 使用VS开发的一个开机自启动启动、可接收指定数据关闭电脑或打开其他程序

    使用VS开发的一个开机自启动启动.可接收指定数据关闭电脑或打开其他程序需要注意的几点 为了能够在其他电脑上运行自己写的程序,需要在VS改一下编译的运行库.(项目->属性->配置属性-> ...

  4. java23种设计模式—— 二、单例模式

    源码在我的github和gitee中获取 介绍 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. ...

  5. go语言之反射

    ---恢复内容开始--- 一 :并发基础 1 并发和并行 并发和并行是两个不同的概念: 并行意味着程序在任意时刻都是同时运行的: 并发意味着程序在单位时间内是同时运行的 详解: 并行就是在任一粒度的时 ...

  6. 揭秘 Kubernetes attach/detach controller 逻辑漏洞致使 pod 启动失败

    前言 本文主要通过深入学习k8s attach/detach controller源码,了解现网案例发现的attach/detach controller bug发生的原委,并给出解决方案. 看完本文 ...

  7. 用maven整合SSM中jsp运行报404和500问题解决方案

    如果代码检查没有错误,建议更改maven版本,可以改为maven-3.6.1 网址:https://archive.apache.org/dist/maven/maven-3/ 选择3.6.1 再点击 ...

  8. 18 vue 动态路由传参

    params形式 http://192.168.1.100:8080/#/infoDetailed/231 //定义路由{ path: "/infoDetailed/:newsId" ...

  9. Java8 ParallelStream

    ParallelStream 并行流就是一个把内容拆分成多个数据块,用不同线程分别处理每个数据块的流.对收集源调用parallelStream方法就能将集合转换为并行流. 并行流 并行流和顺序流转换 ...

  10. 【Java】一句话获得你的IP地址

    System.out.println(java.net.InetAddress.getLocalHost().getHostAddress());