QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2501|回复: 0
打印 上一主题 下一主题

python 解决母亲的奶牛问题

[复制链接]
字体大小: 正常 放大

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-20 11:38 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
题目描述】9 O& v4 C2 p" f8 y4 _; X/ d+ [
7 y* \, m' D' A/ `
        农夫约翰有三个容量分别为 A,B,C 升的挤奶桶。最开始桶 A 和桶 B 都是空的,而桶 C 里装满了牛奶。有时,约翰会将牛奶从一个桶倒到另一个桶中,直到被倒入牛奶的桶满了或者倒出牛奶的桶空了为止。这一过程中间不能有任何停顿,并且不会有任何牛奶的浪费。请你编写一个程序判断,当 A 桶是空的时候,C桶中可能包含多少升牛奶,找出所有的可能情况。0 M) x( s$ f% @0 H

; K0 V1 o2 Y* M- K8 G) G【输入格式】+ C$ L$ T/ k# n) S: o
% B( c5 ~" v$ s, i  a: ]$ {1 u
        共一行,包含三个整数 A,B,C。+ ^; D  y: a& t

3 A: k. t$ q2 w* H【输出格式】
: M! q/ S) B" c9 k* _% M+ F' S8 A' K: F. P: _$ p: i
        共一行,包含若干个整数,表示 C 桶中牛奶存量的所有可能情况,请将这些数字按升序排列。
0 g5 K" [$ y  e+ ?- W% y# Z' e- k. i: L$ |' r; \0 \
【数据范围】9 N" R9 L5 R$ ~0 C0 Z
* Y5 W4 I" ^9 T& X: Q& x' F
        1≤A,B,C≤20) k3 L5 L/ m7 j9 j$ {6 a5 [$ j
2 ~4 ^& Z7 p% t1 j( B  x! F
【输入样例】
0 _, \; q5 ]. c# M3 v2 L. @! t6 d5 F* \
8 9 10
& k4 O2 e' n1 K9 [; j2 m【输出样例】8 G0 B# K8 L% q4 N$ ?9 T" {
; _0 F. o! ^" d( c0 a* O
1 2 8 9 10$ m$ D5 z( X; ~4 ~' M) g- Z
【解题思路】
4 |$ B! M( S6 \6 W' y* s+ M9 f  T) o9 I5 E* l
        BFS简答模拟一下倒牛奶的过程。
  1. from collections import *% ]8 K$ B7 x5 w5 [$ w' Y
  2. a,b,c = map(int,input().split())
    ) k9 W+ D& P( `1 }6 |1 i( ~
  3. n = 22( E& O3 x; ~. e( `% o% n% |
  4. st = [[[0 for _ in range(n)] for _ in range(n)] for _ in range(n)]
    ) D- A1 g) O5 v6 j8 u
  5. 7 V. e% P( {- Q+ T/ L$ b
  6. q = deque()
    + {  f) ?; ]! g# e& X
  7. def ins(a_,b_,c_):1 R\" p/ D  C$ P% f. Y
  8.     global q8 S7 _\" Q' [6 Y9 y2 N$ \: ^9 P# l- w
  9.     if st[a_][b_][c_]:return
    ! q0 ?, \* `# C\" s1 H: x
  10.     q.append([a_,b_,c_])
    ! B6 ~6 {8 z* E3 @/ S; T
  11.     st[a_][b_][c_]=1
    ) ]* e; C! L$ n2 ?
  12. def bfs():
    - v  H+ i5 C! x) f
  13.     q.append([0,0,c])
    9 p- J) s4 ]: E: A! t8 c' W+ k
  14.     st[0][0][c]=1  m5 O5 w6 I! m
  15.     while q:
      x4 `, `- a5 J$ X, x
  16.         a_,b_,c_ = q.popleft(), }5 n- a, Y6 l( _9 `\" K5 E- L% @\" R
  17.         ins( a_-min(a_,b-b_) , b_+min(a_,b-b_) , c_ )# ?: |5 C# o  j7 }0 x( v% ~
  18.         ins( a_-min(a_,c-c_) , b_ , c_+min(a_,c-c_) )
    ( |4 f/ v7 z7 E
  19.         ins( a_+min(b_,a-a_) , b_-min(b_,a-a_) , c_ )
    + o2 T( e2 k  u1 i# G# [
  20.         ins( a_ , b_-min(b_,c-c_) , c_+min(b_,c-c_) )+ {% E& N/ d2 L4 G
  21.         ins( a_+min(c_,a-a_) , b_ , c_-min(c_,a-a_) )1 ^0 _* G; u+ J0 ^* z
  22.         ins( a_ , b_+min(c_,b-b_) , c_-min(c_,b-b_) )2 M+ X6 [* }( P, I7 |1 a+ V- b% s3 A
  23. bfs()
    . K4 k& B' K8 j5 t3 j4 j+ W: F
  24. for c_ in range(c+1):3 d) \1 C: b- G4 F
  25.     for b_ in range(b+1):6 e9 Z1 j; M; }1 _3 r
  26.         if st[0][b_][c_]:
    $ Y3 j, n3 ~5 J+ [4 _
  27.             print(c_,end=' ')
    ) ^\" I* a: b1 W/ M
  28.             break
复制代码
( y: B$ U& s3 c
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-6-16 22:57 , Processed in 0.427804 second(s), 50 queries .

回顶部