時間限制:
1000 ms | 記憶體限制:
65535 kb
難度:4 描述
給出三個水杯,大小不一,並且只有最大的水杯的水是裝滿的,其餘兩個為空杯子。三個水杯之間相互倒水,並且水杯沒有標識,只能根據給出的水杯體積來計算。現在要求你寫出乙個程式,使其輸出使初始狀態到達目標狀態的最少次數。
輸入第一行乙個整數n(0v2>v3 v1<100 v3>0)表示三個水杯的體積。
第二行給出三個整數e1 e2 e3 (體積小於等於相應水杯體積)表示我們需要的最終狀態
輸出每行輸出相應測試資料最少的倒水次數。如果達不到目標狀態輸出-1
樣例輸入
26 3 1
4 1 1
9 3 2
7 1 1
樣例輸出
3-1
#include#include#includeusing namespace std;
int min(int a,int b)
typedef struct nodenode;
bool visit[105][105][105];//記錄水杯出現的狀態
node s,e;//s是初始狀態,e是目標狀態;
int v[3];//報存水杯的當前容量
bool match(node sa)
int bfs() }}
} } return -1;//達不到目標狀態返回-1;
} int main()
}
nyoj 21 三個水杯(廣搜)
時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 給出三個水杯,大小不一,並且只有最大的水杯的水是裝滿的,其餘兩個為空杯子。三個水杯之間相互倒水,並且水杯沒有標識,只能根據給出的水杯體積來計算。現在要求你寫出乙個程式,使其輸出使初始狀態到達目標狀態的最少次數。輸入第一行乙個整數...
三個水杯 NYOJ 21(廣搜)
時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 給出三個水杯,大小不一,並且只有最大的水杯的水是裝滿的,其餘兩個為空杯子。三個水杯之間相互倒水,並且水杯沒有標識,只能根據給出的水杯體積來計算。現在要求你寫出乙個程式,使其輸出使初始狀態到達目標狀態的最少次數。輸入 第一行乙個整...
NYOJ 21 三個水杯 BFS
時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 給出三個水杯,大小不一,並且只有最大的水杯的水是裝滿的,其餘兩個為空杯子。三個水杯之間相互倒水,並且水杯沒有標識,只能根據給出的水杯體積來計算。現在要求你寫出乙個程式,使其輸出使初始狀態到達目標狀態的最少次數。輸入第一行乙個整數...