CodeVS1226 倒水問題

2022-04-06 01:25:48 字數 1264 閱讀 7678

題目描述 description

有兩個無刻度標誌的水壺,分別可裝 x 公升和 y 公升 ( x,y 為整數且均不大於 100 )的水。設另有一水 缸,可用來向水壺灌水或接從水壺中倒出的水, 兩水壺間,水也可以相互傾倒。已知 x 公升壺為空 壺, y 公升壺為空壺。問如何通過倒水或灌水操作, 用最少步數能在x或y公升的壺中量出 z ( z ≤ 100 )公升的水 來。

輸入描述 input description

一行,三個資料,分別表示 x,y 和 z;

輸出描述 output description

一行,輸出最小步數 ,如果無法達到目標,則輸出"impossible"

樣例輸入 sample input

3 22 1

樣例輸出 sample output

題解bfs,一共有6種可能:

1、a桶倒空  2、b桶倒空

3、a桶倒滿  4、b桶倒滿

5、a桶倒入b桶

1)溢位

2)不溢位

6、b桶倒入a桶

1)溢位

2)不溢位

竟然把這裡寫錯了。

//

5 x->y

p = in

; p.x = p.x - min(y-p.y,p.x);

p.y = p.y + min(y-p.y,p.x);

q.push(p);

//6 y->x

p = in

; p.x = p.x + min(x-p.x,p.y);

p.y = p.y - min(x-p.x,p.y);

q.push(p);

#include#include

#include

#include

#define n 1000

using

namespace

std;

struct

cupfirst,now;

intx,y,z;

queue

q;bool

f[n][n];

void extend(cup in

)void

bfs()

extend(now);

}printf(

"impossible");

}int

main()

倒水問題 (codevs 1226) 題解

問題描述 有兩個無刻度標誌的水壺,分別可裝x公升和y公升 x,y 為整數且均不大於100 的水。設另有一水缸,可用來向水壺灌水或接從水壺中倒出的水,兩水壺間,水也可以相互傾倒。已知x公升壺為空壺,y公升壺為空壺。問如何通過倒水或灌水操作,用最少步數能在x或y公升的壺中量出 z z 100 公升的水來...

倒水問題 (codevs 1226) 題解

有兩個無刻度標誌的水壺,分別可裝x公升和y公升 x,y 為整數且均不大於100 的水。設另有一水缸,可用來向水壺灌水或接從水壺中倒出的水,兩水壺間,水也可以相互傾倒。已知x公升壺為空壺,y公升壺為空壺。問如何通過倒水或灌水操作,用最少步數能在x或y公升的壺中量出 z z 100 公升的水來。3 22...

CODEVS 倒水問題

題目描述 有兩個無刻度標誌的水壺,分別可裝 x 公升和 y 公升 x,y 為整數且均不大於 100 的水。設另有一水 缸,可用來向水壺灌水或接從水壺中倒出的水,兩水壺間,水也可以相互傾倒。已知 x 公升壺為空 壺,y 公升壺為空壺。問如何通過倒水或灌水操作,用最少步數能在x或y公升的壺中量出 z z...