QQ登录

只需要一步,快速开始

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

python 解决母亲的奶牛问题

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

1192

主题

4

听众

2946

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-20 11:38 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
题目描述】: U; k7 b2 U6 w

+ {( i+ \; j4 |" f: u        农夫约翰有三个容量分别为 A,B,C 升的挤奶桶。最开始桶 A 和桶 B 都是空的,而桶 C 里装满了牛奶。有时,约翰会将牛奶从一个桶倒到另一个桶中,直到被倒入牛奶的桶满了或者倒出牛奶的桶空了为止。这一过程中间不能有任何停顿,并且不会有任何牛奶的浪费。请你编写一个程序判断,当 A 桶是空的时候,C桶中可能包含多少升牛奶,找出所有的可能情况。2 Q7 p) h& C/ q7 D3 W3 L

. H2 W1 d) ?  f( ]  k7 \【输入格式】
3 M. O) E8 N  z5 a  f( _" I# ~$ e3 M
3 V) r0 ~9 g6 E% d+ T9 Z9 m        共一行,包含三个整数 A,B,C。! A$ e0 |% D* j' ^% `
) N( s3 m" ]) V) C% |
【输出格式】
5 m: k  V7 N8 `5 }
* L  e8 T! c) D        共一行,包含若干个整数,表示 C 桶中牛奶存量的所有可能情况,请将这些数字按升序排列。# R/ F* k. b$ s  e% n4 M. U+ v4 R

3 ~; G5 P9 ]& A. n; ?8 m" ~0 a【数据范围】
# Y% N& _1 u9 Y0 o) e$ ]
; Y" L; `4 u6 @; |        1≤A,B,C≤20
. a. C3 }0 m' u/ b1 c! [4 Z1 k& f- x( Y+ [
【输入样例】
* L$ d% I* i  v/ Y0 P2 A& R" h  Z  x3 L$ k6 n7 Y
8 9 10. b+ k- B( F  g! ~! ?. ^0 x
【输出样例】. d, R' P+ _/ ~7 g" i9 ^
8 r3 r/ s0 O3 o! ?* c
1 2 8 9 105 C+ y9 m( O8 o8 A1 E: k7 u+ I
【解题思路】0 S9 V( @4 j0 e- \. X; W
! N; G0 x# x0 J# o2 i
        BFS简答模拟一下倒牛奶的过程。
  1. from collections import *\" w  a6 z9 `% r2 ?% Z9 L
  2. a,b,c = map(int,input().split())\" s7 g- D/ r9 _4 E+ j; m
  3. n = 22$ F# m1 i: b: y0 S* h- y
  4. st = [[[0 for _ in range(n)] for _ in range(n)] for _ in range(n)]
    / I( [7 R1 E( ], f( i
  5. * g5 Z- ?+ d4 ^\" F9 b
  6. q = deque()! [. O3 K0 s\" {3 i& C! Y$ z
  7. def ins(a_,b_,c_):
    . @( r& m8 C1 K0 C1 R( Z
  8.     global q
    $ L8 n4 p5 A- _7 v% a/ d- {$ J3 ]1 q
  9.     if st[a_][b_][c_]:return/ j, ?2 ], F+ B. k0 I/ W
  10.     q.append([a_,b_,c_])# J; }; e+ o3 @. W
  11.     st[a_][b_][c_]=1
    \" J# H' J+ M) ~
  12. def bfs():6 |9 V! s  V- v
  13.     q.append([0,0,c])
    ( ^4 C5 c( t/ {2 A
  14.     st[0][0][c]=14 q, a) I, n5 W: U$ r' }& P, I: q
  15.     while q:
    4 {; p4 Y4 Z& [& Q9 p; T
  16.         a_,b_,c_ = q.popleft()( `. I% U\" i2 G7 b2 D* Q
  17.         ins( a_-min(a_,b-b_) , b_+min(a_,b-b_) , c_ )
    3 G/ K2 D0 K\" e( m8 I, W& m: H
  18.         ins( a_-min(a_,c-c_) , b_ , c_+min(a_,c-c_) )
    7 M- N$ Y0 l; _1 k0 O+ H
  19.         ins( a_+min(b_,a-a_) , b_-min(b_,a-a_) , c_ )
    - b8 ?  S8 {\" e7 W! _/ l/ j4 f
  20.         ins( a_ , b_-min(b_,c-c_) , c_+min(b_,c-c_) )\" L8 D5 n* X  j, x
  21.         ins( a_+min(c_,a-a_) , b_ , c_-min(c_,a-a_) )* E& `: K5 V  }0 T9 E- n\" g
  22.         ins( a_ , b_+min(c_,b-b_) , c_-min(c_,b-b_) )6 r, }, O0 N8 N* |
  23. bfs()2 m3 m+ v! F9 Y  a: L  a* ~
  24. for c_ in range(c+1):
    1 s) t6 P. K( K: s
  25.     for b_ in range(b+1):2 j- s, \6 \! o
  26.         if st[0][b_][c_]:, F5 S\" g8 s  j9 E\" y: \
  27.             print(c_,end=' ')
    ( H6 b\" A. l6 d7 M\" K6 s( X- ?# H
  28.             break
复制代码

3 D6 g1 W! d4 r* b
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-8-25 22:06 , Processed in 0.476605 second(s), 51 queries .

回顶部