題意:
小明買了一瓶可樂,容量為s,小明有2個杯子,容量分別為n,m,現在小明要把可樂分成體積相等的2部分,問需要幾個步驟。
s,n,m都是整數。
1.若s為奇數,明顯不可以.
2.若s為偶數,進行bfs.
vis陣列,記錄哪些狀態出現過。
1 #include2 #include3 #include4 #include5view codeusing
namespace
std;
6const
int maxn=101;7
bool
vis[maxn][maxn][maxn];
8int
s,n,m;
9struct
edge10;
13bool judge(int s,int n,int
m)14
23int bfs(int
s)24
50 cnt.s=u.s-min(u.s,m-u.m);
51 cnt.n=u.n;
52 cnt.m=u.m+min(u.s,m-u.m);
53if(!vis[cnt.s][cnt.n][cnt.m])
57if(u.n+u.s<=s)65}
66if(u.n+u.s>s)74}
75if(u.n+u.m<=m)83}
84if(u.n+u.m>m)92}
93if(u.m+u.s<=s)
101}
102if(u.m+u.s>s)
110}
111if(u.n+u.m<=n)
119}
120if(u.n+u.m>n)
128}
129130
}131
return -1
;132
}133
intmain()
134148
}149
return0;
150 }
hdu 1495 非常可樂 bfs
題目 剛開始那做這個題 怎麼也想不出為什麼可以用bfs 我認為做這個題目 你想到有6種情況哦 假設s 是瓶子 n,m 是有容量的杯子,s可以倒入n中 s也可以倒入m中 n可以倒入s中 n 也可以倒入m中 m也是一樣的哦 所以就有六種情況哦。下面看具體ac 裡面有註解哦 include include...
HDU 1495 非常可樂 (BFS)
problem description 大 家一定覺的運動以後喝可樂是一件很愜意的事情,但是seeyou卻不這麼認為。因為每次當seeyou買了可樂以後,阿牛就要求和seeyou一起分享這 一瓶可樂,而且一定要喝的和seeyou一樣多。但seeyou的手中只有兩個杯子,它們的容量分別是n 毫公升和m...
hdu 1495 非常可樂 bfs
大家一定覺的運動以後喝可樂是一件很愜意的事情,但是seeyou卻不這麼認為。因為每次當seeyou買了可樂以後,阿牛就要求和seeyou一起分享這一瓶可樂,而且一定要喝的和seeyou一樣多。但seeyou的手中只有兩個杯子,它們的容量分別是n 毫公升和m 毫公升 可樂的體積為s s 101 毫公升...