題目描述:
有兩個無刻度標誌的水壺,分別可裝 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...