QQ登录

只需要一步,快速开始

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

python 解决母亲的奶牛问题

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

1192

主题

4

听众

2946

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-20 11:38 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
题目描述】( G* D+ E# F/ j3 ]! I
# }/ \3 d" e8 s7 f6 e( q
        农夫约翰有三个容量分别为 A,B,C 升的挤奶桶。最开始桶 A 和桶 B 都是空的,而桶 C 里装满了牛奶。有时,约翰会将牛奶从一个桶倒到另一个桶中,直到被倒入牛奶的桶满了或者倒出牛奶的桶空了为止。这一过程中间不能有任何停顿,并且不会有任何牛奶的浪费。请你编写一个程序判断,当 A 桶是空的时候,C桶中可能包含多少升牛奶,找出所有的可能情况。
5 r- H; o1 n. u; E/ V" R( ^7 ]# X! x9 t5 T+ L7 \! Z, @
【输入格式】
: }; i8 V9 h! a$ z" F4 G
1 h- }3 D/ M8 W- |/ ^0 D        共一行,包含三个整数 A,B,C。
5 {, _) d7 s3 m; ^# a0 k; F
* Y! I$ K, c) e* W【输出格式】8 T# }$ ^' P7 f. ?2 ]& i

/ r4 P+ Z* Z4 y        共一行,包含若干个整数,表示 C 桶中牛奶存量的所有可能情况,请将这些数字按升序排列。. m. x8 ~; |# @+ _
7 G& Q3 c0 a7 B, q' w9 J
【数据范围】
3 o' C4 [5 g( R% C5 i6 {4 O( a+ ~' M8 g
        1≤A,B,C≤205 R  p% X1 O, Z3 g9 ^

4 ^, J5 p6 e4 p【输入样例】
7 U; ~; j) @* N* k* a0 x* K5 w1 p7 G2 |) b
8 9 10
! G- E+ n% x! Z' G. b9 @' `$ ~【输出样例】
" \" Q7 U$ g. \& R2 `! {
# _& v* d% L7 ~' a# V( i: g1 2 8 9 10
/ A' v' F9 o& p  O! t 【解题思路】' T# v9 q6 U4 b& a
1 F3 M1 {1 E- M1 R: S
        BFS简答模拟一下倒牛奶的过程。
  1. from collections import *) G\" q! ~; @  v: n0 h
  2. a,b,c = map(int,input().split())
    : z/ K$ k9 A: I  y# J
  3. n = 22
    4 B. X+ e2 _* t! c& b
  4. st = [[[0 for _ in range(n)] for _ in range(n)] for _ in range(n)]! U5 d* L; n- N0 z' ^
  5. : R% c! D: D) P- M- K
  6. q = deque()
    ) b( w* b6 u# I
  7. def ins(a_,b_,c_):
    + K( K% }  p/ Q; \
  8.     global q- X+ W7 D: l0 G\" O1 R
  9.     if st[a_][b_][c_]:return
    1 K& N3 b( s- v3 W- f
  10.     q.append([a_,b_,c_])
    1 K+ I8 f9 C/ B* ^1 o# p
  11.     st[a_][b_][c_]=1/ H2 W& N% u/ x& M* |
  12. def bfs():: I; \- A8 h; M
  13.     q.append([0,0,c])
    8 a9 ^( w' N2 L. r% H3 m1 h) {
  14.     st[0][0][c]=1
    $ W* q' A: P6 r+ m! R: t$ Y
  15.     while q:4 g( g) ~0 O, M) ?* P
  16.         a_,b_,c_ = q.popleft()9 E9 Z+ d, C2 o0 C: [. v
  17.         ins( a_-min(a_,b-b_) , b_+min(a_,b-b_) , c_ )
    + n4 B# \# g( F7 W4 ^
  18.         ins( a_-min(a_,c-c_) , b_ , c_+min(a_,c-c_) )3 c6 W8 H0 d$ P0 I  P+ @2 `
  19.         ins( a_+min(b_,a-a_) , b_-min(b_,a-a_) , c_ )
    4 u4 w) h\" d  P# N- [5 T5 f& a
  20.         ins( a_ , b_-min(b_,c-c_) , c_+min(b_,c-c_) )6 e$ P+ g+ D: s1 H5 I
  21.         ins( a_+min(c_,a-a_) , b_ , c_-min(c_,a-a_) )9 w  L, I( ~\" }
  22.         ins( a_ , b_+min(c_,b-b_) , c_-min(c_,b-b_) )
    & z8 I+ D0 n+ Q% b
  23. bfs()
    # j$ g0 T1 B/ p( t# L2 z
  24. for c_ in range(c+1):
    7 m& ^% n+ J5 a6 X
  25.     for b_ in range(b+1):
    ; E. }- C1 Y0 N# y* i4 w2 @
  26.         if st[0][b_][c_]:' T0 b& O* I5 D& j$ s$ X, d
  27.             print(c_,end=' ')
    $ F7 M( |) {) N/ l* c\" o
  28.             break
复制代码
4 b# E& K4 X2 e+ N4 f; j, r8 P0 x
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 21:57 , Processed in 0.306633 second(s), 51 queries .

回顶部