**有錯誤 ,過不了,肯跌 還沒檢查出來
#include#include#include#includeusing namespace std;
struct node
;int n,m,s;
int vis[101][101][101];
int main()
queueq;
node start,st;
start.bottle[0]=s,start.bottle[1]=0,start.bottle[2]=0,start.t=0;
st.bottle[0]=s,st.bottle[1]=n,st.bottle[2]=m;
int ans=0,flag=0,half=s/2;
memset(vis,0,sizeof(vis));
vis[s][0][0]=1;
while(!q.empty())
q.pop();
q.push(start);
while(!q.empty())
/* node temp=cur;
temp.t++;*/
cur.t++;
for(int i=0;i<3;i++)
else
/**if(temp.bottle[i]+temp.bottle[j]>st.bottle[j])
else
*/if(vis[temp.bottle[0]][temp.bottle[1]][temp.bottle[2]]==0)}}
}}
}if(flag==0)
printf("no\n");
else
printf("%d\n",ans);
}return 0;
}
hdu 1495 非常可樂
題意 給你三個容器讓你平分可樂,求最少的步數。思路 一看到求最少步數,就想到了廣搜,但是沒有思路,但看別人分情況,瞬間就明白啦。可以s n,s m,n s,n m,m s,m n這六種情況討論就行,每種又有倒完和倒不完兩種情況,直到出現兩個容器都有s 2,這就是最少步數。但s是奇數時是不能平分的,三...
hdu 1495 非常可樂
hdu 1495 非常可樂 題目大意 給你三個容器,他們的容量分別是 s,n,m 且s n m,給你s,n,m。s代表裝在容器裡可樂,n和m代表的是兩個杯子的容量,求他們能否平分這杯可樂。如果能就輸出倒的最小次數,如果不能就輸出 no。題目分析 也就是要達到能 s 2,0,s 2或 0 s 2,s ...
hdu 1495 非常可樂
兩個杯子按大小排序,為s m n,1.只要n滿了,就把n裡的東西放到s中 2.只要m非空,就把m中的放到n中 3.如果m為空,把s中的放到m中 超時 include int n,m,s int main if ss aa bb 0 得到均分 if bb b 若小杯子裡裝滿可樂,將小杯子裡的可樂倒入可...