1495可樂分配問題也可以BFS

2021-08-18 19:36:05 字數 722 閱讀 1881

#include//一開始找規律,雖然總感覺能找到但是很浪費時間其實,然後看到了bfs簡直豁然開朗

#include#include#include#define n 100+5

using namespace std;

struct nodest;//深刻理解了bfs不止是迷宮圖什麼的,只要和最短最少有關就可以考慮,只要有起點和終點,有搜尋「方向」就可以搜尋

int a,b,s;

int vis[n][n];

int bfs()//這題的「方向」就是三個杯子互相倒水,一共六種可能,也就是六個方向

}if(u.s && u.b!=b) //s->b

}if(u.a && u.s!=s) //a->s

}if(u.a && u.b!=b) //a->b

}if(u.b && u.a!=a) //b->s

}if(u.b && u.s!=s) //b->a

}q.pop();

}return 0; //所有擴充套件的狀態都不能使之平分。

}int main()//這題其實很好的說明了,搜尋的方向其實就是可能性,表示出來也就寫出來了

if(aint ans=bfs();

if(ans) printf("%d\n",ans);

else puts("no");

}return 0;

}

HDU 1495 非常可樂(倒水問題)

分析這道題屬於倒水問題,分為兩種情況,乙個杯子倒滿或者乙個杯子倒空,用優先佇列儲存各種狀態,按照操作次數從小到大排 小的先出佇列 用bfs求最少的操作次數,我參考的是劉汝佳的 倒水問題 與這道題思想一致,結束條件不同而已。include include include includeusing na...

HDU1495 非常可樂 倒水問題 BFS

由於沒有刻度,所以只能是倒完或者說是將所倒的那個容器倒滿,所以說得分6種情況考慮,每種情況還要再細分兩種情況考慮。include include include include include include include include include include include inclu...

最詳細完全揹包問題,小白也可以看懂,哦耶

完全揹包是在n種物品中選取若干件 同一種物品可多次選取 放在空間為v的揹包裡 第i種物品的體積是v,價值是w 求將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大 首先看上面這張圖 左邊的黃色縱行代表的是第n件物品 上面的藍灰色橫行代表的是第n件物品的體積和價值 右邊的綠色橫行代表...