做网上商城网站,wordpress的Portfolio,海南在线人才网招聘信息,微信网站开发哪家好题目描述
最近小w学了一手调酒的技巧#xff0c;这么帅的操作#xff0c;说不定能靠这个俘获女神的芳心#xff0c;为了在女神面前露一手#xff0c;他想在学校里建一个pub#xff0c;但是显然学校不可能让他真的建一个pub#xff0c;那么他退而…题目描述
最近小w学了一手调酒的技巧这么帅的操作说不定能靠这个俘获女神的芳心为了在女神面前露一手他想在学校里建一个pub但是显然学校不可能让他真的建一个pub那么他退而求次想建一个Yogurt shop不能用酒那用酸奶也行啊 今天女神终于来光顾小w的酸奶店了兴奋的小w拿出自己准备已久每天都仔细擦干净的装备——调酒壶、果汁机、隔冰器和计量杯、砧板、小刀....准备露一手给女神看看 但是女神却没有那么多耐心女神只是觉得自己买一瓶大酸奶喝不完小瓶酸奶不够喝所以在小w的酸奶店说不定她可以想买多少就买多少。 于是女神告诉了小w她想要多少体积的酸奶而小w却依旧想秀一下自己的操作于是他决定用仅有的两个调酒壶为女神倒出女神想要的酸奶.... 小w的两个调酒壶体积是不同的(一开始都是空的)小w每次可以选择一个调酒壶倒入另一个调酒壶若A倒入BA倒完或B倒满则停止或者选择一个调酒壶倒光或者选择一个调酒壶去接满酸奶..... 满心失望的小w想找一朵花一瓣一瓣的撕下来问问花朵女神到底喜不喜欢他...虽然这个答案是显而易见的但是他还是想找一朵花...然而找花未果反正花瓣不是偶数就是奇数那他索性就用自己的操作次数作为花瓣个数吧找不到花我还不能脑补一朵吗... 但是小w已经没有心情去想答案了...那么你能告诉他需要多少步操作才能倒出女神想要的酸奶吗 输入
输入包含多组数据每行三个正整数a,b,c分别表示两个调酒壶的容量以及女神想要的酸奶体积,a,b的范围都在[0,100]cmax(a,b) 输出
一行包含一个整数表示完成要求的最少操作次数若达不到则输出impossible没有双引号 样例输入
复制样例数据
10 15 11
6 5 4
样例输出
impossible
4提示 我不知道为什么酸奶可以倒进调酒壶我也不知道为什么女神不喜欢小w我只知道凭小w的想象力游泳池都行更别说一朵花了 解题思路
对于两个调酒壶可以对其进行六种操作将a中的酒倒入b中将b中的酒倒入a中将a灌满将b灌满将a倒空将b倒空用一个数组标记一下两酒壶出现的情况bfs即可。
推荐两道与此题差不多的题
https://blog.csdn.net/YT201758501112/article/details/83278909https://blog.csdn.net/YT201758501112/article/details/83278654
代码 #include cstdio
#include iostream
#include algorithm
#include cmath
#include cstdlib
#include cstring
#include map
#include stack
#include queue
#include vector
#include bitset
#include set
#include utility
#include sstream
#include iomanip
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define inf 0x3f3f3f3f
#define rep(i,l,r) for(int il;ir;i)
#define lep(i,l,r) for(int il;ir;i--)
#define ms(arr) memset(arr,0,sizeof(arr))
//priority_queueint,vectorint ,greaterint q;
const int maxn (int)1e5 5;
const ll mod 1e97;
int a,b,c;
bool vis[120][120];
struct node
{int x;int y;int step;
};
void bfs()
{queuenode q;while(!q.empty()) q.pop();node fis;fis.x0;fis.y0;fis.step0;vis[0][0]true;q.push(fis);while(!q.empty()) {node froq.front(),nxt;q.pop();if(fro.xc||fro.yc) {coutfro.stependl;return;}rep(i,1,6) {if(i1) {int napefro.xfro.y;if(fro.x0) {if(napeb) {nxt.xnape-b;nxt.yb;}else {nxt.x0;nxt.ynape;}nxt.stepfro.step1;if(vis[nxt.x][nxt.y]false) {vis[nxt.x][nxt.y]true;q.push(nxt);}}}if(i2) {int napefro.xfro.y;if(fro.y0) {if(napea) {nxt.ynape-a;nxt.xa;}else {nxt.y0;nxt.xnape;}nxt.stepfro.step1;if(vis[nxt.x][nxt.y]false) {vis[nxt.x][nxt.y]true;q.push(nxt);}}}if(i3) {if(fro.x0) {nxt.x0;nxt.yfro.y;nxt.stepfro.step1;if(vis[nxt.x][nxt.y]false) {vis[nxt.x][nxt.y]true;q.push(nxt);}}}if(i4) {if(fro.y0) {nxt.y0;nxt.xfro.x;nxt.stepfro.step1;if(vis[nxt.x][nxt.y]false) {vis[nxt.x][nxt.y]true;q.push(nxt);}}}if(i5) {if(fro.xa) {nxt.xa;nxt.yfro.y;nxt.stepfro.step1;if(vis[nxt.x][nxt.y]false) {vis[nxt.x][nxt.y]true;q.push(nxt);}}}if(i6) {if(fro.yb) {nxt.yb;nxt.xfro.x;nxt.stepfro.step1;if(vis[nxt.x][nxt.y]false) {vis[nxt.x][nxt.y]true;q.push(nxt);}}}}}coutimpossibleendl;
}
int main()
{#ifndef ONLINE_JUDGEfreopen(in.txt, r, stdin);#endif//freopen(out.txt, w, stdout);ios::sync_with_stdio(0),cin.tie(0);while(cinabc) {memset(vis,false,sizeof vis);bfs();}return 0;
}