#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件物品的體積和價值 右邊的綠色橫行代表...