CODEVS 倒水問題

2021-07-24 15:57:04 字數 791 閱讀 5142

題目描述:

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

輸入描述:

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

輸出描述:

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

樣例輸入:

3 22 1

樣例輸出:14

直接暴力掉。x倒入y中、y倒入z中、x倒空、z倒空、x倒滿、y倒滿六種大情況。

#include#include#includeusing namespace std;

int x,y,z;

bool book[20000][20000];

struct v

v(int c,int d,int e):a(c),b(d),step(e){};

};queueq;

bool bfs()

else if(i==3&&a0)

else if(i==4&&a>0) q1=0,q2=b,q3=step+1;

else if(i==5&&b>0) q1=a,q2=0,q3=step+1;

if(!book[q1][q2])

}} return false;

}int main()

CodeVS1226 倒水問題

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

倒水問題 (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...