#!/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. selenium定位方法(二)

    selenium定位方法(二)  1.xpath定位:xpath是在XML中查找节点所在的路径的表达式 1)绝对路径的Xpath表达式 例:/html/body/div/div[1]/ul//li[3 ...

  2. css基本样式设置

    div中文字居中 如何让一个div中的文字水平和垂直居中?设置如下: 给定该div的长宽(或者二者只给出其一也可) .box{ height: 100px; width: 30%; text-alig ...

  3. go语言开发入门

    go语言开发入门 每个Go程序包含一个名为main的包以及其main函数,在初始化后,程序从main开始执行,避免引入不使用的包(编译不通过) 基础语法 基本数据类型 bool, byte int,i ...

  4. oeasy教您玩转linux010201持续输出yes

    我们来回顾一下 上一部分我们都讲了什么?

  5. 只有一重循环的排序——侏儒排序(Gnome Sort)

    侏儒排序:从头(i=0)开始遍历元素,如果当前元素比前一个元素大(array[i]>array[i-1]),就把它跟前一个元素互换(Swap(a[i],a[i-1]))并继续检查它(i--),否 ...

  6. 在Mac上打开多个Unity实例

    alias koa_unity="open -n /Applications/Unity\ 5.2.2/Unity.app" alias rob_unity="open ...

  7. 初级知识点一——C#中的值类型与引用类型

    从C#语言的定义中可以知道,C#支持两种值类型,分别是 值类型和引用类型,那么两者的区别到底在哪儿呢? 值类型特点: 1. 值类型包含 a 预定义的值类型 b 用户自定义的值类型(struct) 2. ...

  8. 面试【JAVA基础】集合类

    1.ArrayList的扩容机制 每次扩容是原来容量的1.5倍,通过移位的方法实现. 使用copyOf的方式进行扩容. 扩容算法是首先获取到扩容前容器的大小.然后通过oldCapacity (oldC ...

  9. 深入了解Redis【二】对象及数据结构综述

    引言 Redis中每个键值对都是由对象组成: 键总是一个字符串对象(string) 值可以是字符串对象(string).列表对象(list).哈希对象(hash).集合对象(set).有序集合对象(z ...

  10. [BUUOJ记录] [ACTF2020 新生赛]BackupFile、Exec

    两道题都比较简单,所以放到一块记下来吧,不是水博客,师傅们轻点打 BackupFile 题目提示“Try to find out source file!”,访问备份文件/index.php.bak获 ...