1495 非常可樂(BFS)
7 4 3 4 1 3 0 0 0Sample Output
NO 3思路:六種情況: 1.s往a中倒滿
2.s往b中倒滿
3.a往s中倒滿
4.b往s中倒滿
5.a往b中倒
6.b往a中倒
通過這六種情況的BFS即可解決這個問題。
程式碼如下:
#include<cstdio> #include<queue> #include<cstring> using namespace std; int s,a,b; int vis[110][110]; struct node{ int a,b,s,t; }nd[110]; int bfs(){ queue<node> q; memset(vis,0,sizeof(vis)); node st,ed; st.a=0;st.b=0;st.s=s;st.t=0; q.push(st); vis[a][b]=1; while(!q.empty()){ st=q.front(); if(st.a==s/2&&st.s==s/2) return st.t; if(st.s&&st.a!=a){//s往a中倒滿 int c=a-st.a; if(st.s>=c){ ed.a=a; ed.s=st.s-c; } else{ ed.s=0; ed.a=st.a+st.s; } ed.b=st.b; ed.t=st.t+1; if(!vis[ed.a][ed.b]){ q.push(ed); vis[ed.a][ed.b]=1; } } if(st.s&&st.b!=b){//s往b中倒滿 int c=b-st.b; if(st.s>=c){ ed.b=b; ed.s=st.s-c; } else{ ed.s=0; ed.b=st.b+st.s; } ed.a=st.a; ed.t=st.t+1; if(!vis[ed.a][ed.b]){ q.push(ed); vis[ed.a][ed.b]=1; } } if(st.a&&st.s!=s){//a往s中倒滿 int c=s-st.s; if(st.a>=c){ ed.s=s; ed.a=st.a-c; } else{ ed.a=0; ed.s=st.s+st.a; } ed.b=st.b; ed.t=st.t+1; if(!vis[ed.a][ed.b]){ q.push(ed); vis[ed.a][ed.b]=1; } } if(st.b&&st.s!=s){//b往s中倒滿 int c=s-st.s; if(st.b>=c){ ed.s=s; ed.b=st.b-c; } else{ ed.b=0; ed.s=st.s+st.b; } ed.a=st.a; ed.t=st.t+1; if(!vis[ed.a][ed.b]){ q.push(ed); vis[ed.a][ed.b]=1; } } if(st.a&&st.b!=b){//a往b中倒 int c=b-st.b; if(st.a>=c){ ed.b=b; ed.a=st.a-c; } else{ ed.a=0; ed.b=st.b+st.a; } ed.s=st.s; ed.t=st.t+1; if(!vis[ed.a][ed.b]){ q.push(ed); vis[ed.a][ed.b]=1; } } if(st.b&&st.a!=a){//b往a中倒 int c=a-st.a; if(st.b>=c){ ed.a=a; ed.b=st.b-c; } else{ ed.b=0; ed.a=st.a+st.b; } ed.s=st.s; ed.t=st.t+1; if(!vis[ed.a][ed.b]){ q.push(ed); vis[ed.a][ed.b]=1; } } q.pop(); } return 0; } int main(){ while(~scanf("%d%d%d",&s,&a,&b)){ if((s||a||b)==0) break; if(s%2){ printf("NO\n"); continue; } if(a<b){ int swap=a; a=b; b=swap; } int ans=bfs(); if(ans) printf("%d\n",ans); else printf("NO\n"); } return 0; }
相關推薦
HDU 1495 非常可樂 (BFS)
return sin 相互 目標 ace down ont long read 大家一定覺的運動以後喝可樂是一件很愜意的事情,但是seeyou卻不這麽認為。因為每次當seeyou買了可樂以後,阿牛就要求和seeyou一起分享這一瓶可樂,而且一定要喝的和seeyou一樣多。但
HDU - 1495 非常可樂(bfs)
ostream pre ios rec scrip miss type span %d 非常可樂 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total
1495 非常可樂(BFS)
大家一定覺的運動以後喝可樂是一件很愜意的事情,但是seeyou卻不這麼認為。因為每次當seeyou買了可樂以後,阿牛就要求和seeyou一起分享這一瓶可樂,而且一定要喝的和seeyou一樣多。但seeyou的手中只有兩個杯子,它們的容量分別是N 毫升和M 毫升 可樂的體積為S
HDU 1495 非常可樂(BFS倒水問題)
非常可樂 std push pre con scanf col break memset 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1495 題目大意:只有兩個杯子,它們的容量分別是N 毫升和M 毫升 可樂的體積為S (
HDU 1495 非常可樂(不一樣的bfs)
非常可樂 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 25387&n
HDU 1495 非常可樂【BFS】
esp style 模擬操作 pop ace nbsp urn 而且 ane 題目鏈接:https://vjudge.net/problem/HDU-1495 轉載於:https://www.cnblogs.com/ECJTUACM-873284962/p/6750320.
1495 非常可樂【bfs】
非常可樂 大家一定覺的運動以後喝可樂是一件很愜意的事情,但是seeyou卻不這麼認為。因為每次當seeyou買了可樂以後,阿牛就要求和seeyou一起分享這一瓶可樂,而且一定要喝的和seeyou一樣多。但seeyou的手中只有兩個杯子,它們的容量分別是N 毫升和M 毫升 可
HDU 1495 - 非常可樂 - [BFS]
ron 整數 難度 求和 div names ems mba color 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1495 Time Limit: 2000/1000 MS (Java/Others) Memory
HDU 1495 非常可樂 BFS/數論
[0 pac sca 此刻 gin 兩個 妹子 inpu urn M - 非常可樂HDU - 1495 大家一定覺的運動以後喝可樂是一件很愜意的事情,但是seeyou卻不這麽認為。因為每次當seeyou買了可樂以後,阿牛就要求和seeyou一起分享這一瓶可樂,而且一定要
HDU - 1495 非常可樂(BFS列舉 or 數論)
題目大意 三個cup,容量分別為s,n,m(s=n+m),cup沒有刻度(這個真的坑,就是要麼倒完要麼倒滿)。初始狀況,s滿,n、m空,求能否通過相互之間倒可樂,把可樂平分。能的話,輸出最小次數。 分析 每次倒都有6種情況s-n,s-m.....。可以BFS分別列舉每種倒
HDU 1495 非常可樂(bfs)
Problem Description 大家一定覺的運動以後喝可樂是一件很愜意的事情,但是seeyou卻不這麼認為。因為每次當seeyou買了可樂以後,阿牛就要求和seeyou一起分享這一瓶可樂,而且
非常可樂(多參數bfs模擬
printf div des space cst accep pri esc output 非常可樂 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T
捕牛記(1503)解題報告(bfs)
字節數 first 檢測 表示 所有結點 sca c++ fin ++ 解題思路:每到一個坐標點都有三種走法,每個點只走一次,直到第一次發現牛的坐標為止。用廣度優先搜索(Breadth First Search)(bfs) 代碼實現:定義一個標記結點狀態的數組、一個記錄
HDU 1495 非常可樂
tdi gcd stream ret clas amp can mes iostream #include<cstdio> #include<iostream> using namespace std; int gcd(int a,int b) {
三個水杯(BFS)
post pos acm class .net 一行 ora sea ref 三個水杯 時間限制:1000 ms | 內存限制:65535 KB 難度:4 描寫敘述給出三個水杯。大小不一,而且僅僅有最大的水杯的水是裝滿的,其余兩
(BFS)HDU 4784 Dinner Coming Soon
same %d mod eas offer pack iostream amp ide Coach Pang loves his boyfriend Uncle Yang very much. Today is Uncle Yang’s birthday, Coach
CSU-1975 機器人搬重物(BFS)
技術分享 問題 不能 三種方式 rmi right warning break ont 1975: 機器人搬重物 Time Limit: 1 Sec Memory Limit: 128 Mb Submitted: 64 Solved: 10
層層遞進——寬度優先搜索(BFS)
一個數 學習 情況 art 打印 能夠 blank alt .cn 問題引入 我們接著上次“解救小哈”的問題繼續探索,不過這次是用寬度優先搜索(BFS)。 註:問題來源可以點擊這裏 http://www.cnblogs.com/Octoptus
饑餓的小易(枚舉+廣度優先遍歷(BFS))
其中 尋找 net inpu 最大 size ron sdn style 題目描述 小易總是感覺饑餓,所以作為章魚的小易經常出去尋找貝殼吃。最開始小易在一個初始位置x_0。對於小易所處的當前位置x,他只能通過神秘的力量移動到 4 * x + 3或者8 * x + 7。因為使
洛谷 P3956 棋盤 (BFS)
色相 set -c 數據 queue 分享 clu ++ 最小值 題目鏈接:https://www.luogu.org/problemnew/show/P3956 題目: 題目描述 有一個m × m的棋盤,棋盤上每一個格子可能是紅色、黃色或沒有任何顏色的。