nyoj 三個水杯 BFS

2021-07-02 01:20:44 字數 889 閱讀 9635

解題思路:

有三種容量的杯子(v1, v2, v3),記錄每乙個杯子裡水的體積為(s1, s2, s3),每乙個杯子的剩餘容量為水杯裡的水在相互傾倒的時候會有以下的兩種情況

1、乙個杯子a所剩的容量(大小為va-sa)比水杯b要倒過來的水(大小為sb)的時候可以將b裡的水全部倒到a中,最終a中水的體積為sa+sb, b中水的體積為0;

2、乙個杯子a所剩的容量(大小為va-sa)比水杯b要倒過來的水(大小為sb)

的時候,

b中水的體積為b中水的體積減去a的剩餘容量sb=sb-(va-sa),

a中最終水的體積為a杯子的容量sa=va;

}else if (v[dx[i]]-tmp.v[dx[i]] < tmp.v[dy[i]])//剩餘容量比要倒的水小}}

}if (!flag)

cout<

nyoj三個水杯 bfs

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 給出三個水杯,大小不一,並且只有最大的水杯的水是裝滿的,其餘兩個為空杯子。三個水杯之間相互倒水,並且水杯沒有標識,只能根據給出的水杯體積來計算。現在要求你寫出乙個程式,使其輸出使初始狀態到達目標狀態的最少次數。輸入第一行乙個整數...

nyoj三個水杯 bfs

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述給出三個水杯,大小不一,並且只有最大的水杯的水是裝滿的,其餘兩個為空杯子。三個水杯之間相互倒水,並且水杯沒有標識,只能根據給出的水杯體積來計算。現在要求你寫出乙個程式,使其輸出使初始狀態到達目標狀態的最少次數。輸入第一行乙個整數n...

NYOJ 21 三個水杯 BFS

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 給出三個水杯,大小不一,並且只有最大的水杯的水是裝滿的,其餘兩個為空杯子。三個水杯之間相互倒水,並且水杯沒有標識,只能根據給出的水杯體積來計算。現在要求你寫出乙個程式,使其輸出使初始狀態到達目標狀態的最少次數。輸入第一行乙個整數...