Fill BFS 優先佇列 UVA10603

2021-09-19 19:08:52 字數 1297 閱讀 5465

uva 10603

#include

#include

#include

using

namespace std;

struct node

friend

bool

operator

<

(node a, node b)};

int a, b, c, d;

int vis[

205]

[205];

// b杯和c杯的容量表示一種狀態

int record[

205]

;// 儲存至少乙個杯子有i公升水時的最少倒水量

int capacity[3]

;bool

judge

(int i,

int j, node u)

void

bfs(

)for

(int i =

0; i <

3; i++

)for

(int j =

0; j <

3; j++)}

}}if(record[d]==-

1)}}

cout << record[d]

<<

" "<< d << endl;

}int

main()

return0;

}

#include

#include

using

namespace std;

struct node };

int record[

1005];

// 有乙個杯子由i公升水所需要的最少操作次數

int vis[

1005][

1005];

// 中杯餘量和小杯餘量表示乙個狀態

int arr[3]

;// 三個杯子的容量

int a, b, c, x;

bool

judge

(int i,

int j, node u)

void

bfs()}

}}if(record[x]!=-

1) cout << record[x]

<< endl;

else cout <<

"no"

<< endl;

}int

main()

return0;

}

UVa 10603 Fill (BFS 優先佇列)

題意 給定4個數,a,b,c,d,分別代表空杯子容積為a,b,乙個盛滿水的杯子容積為c,讓你不斷倒水,找乙個dd,是不是存在某個時刻,某個杯子裡的水dd,和d相同,或者無限接近。讓求最少的倒水量和dd 可能和d相同 解析 用bfs列舉所有的狀態,就是把i裡面的水倒到j裡面,在這裡學到了用node的優...

UVA1203Argus(優先佇列)

題目 uva1203argus 優先佇列 題目大意 給你多個專案,每個專案有它發生的週期和對應的q num值。現在要求給出前k個專案,時間優先,同一時刻發生的先輸出q num值小的。解題思路 先將這幾個專案排下順序,一開始這些專案的發生時間就是週期,按照時間優先和同一時刻的q num優先的原則將這個...

UVa 10603 BFS 優先佇列

題目鏈結 解題報告 lrj紫書中路徑尋找問題的例題。大部分細節書中都有說明,不再贅述。說一點自己的感想。書裡面說演算法的正確性不是顯然的,可是我覺得應該是顯然的吧?每次找到佇列裡dist值最小的狀態,以它來更新ans值,並且拓展其他狀態。假如當前我們找到了乙個恰好有某個瓶子裡的水為d公升的狀態p,現...