無腦博士的試管們 dfs

2021-08-17 21:08:10 字數 1302 閱讀 4289

無腦博士有三個容量分別是 a,b,ca,

b,c 公升的試管,a,b,ca,

b,c 分別是三個從 1

1 到 2020

的整數,最初,a

a 和 b

b 試管都是空的,而 c

c 試管是裝滿硫酸銅溶液的。有時,無腦博士把硫酸銅溶液從乙個試管倒到另乙個試管中,直到被灌試管裝滿或原試管空了。當然每一次灌注都是完全的。由於無腦博士天天這麼折騰,早已熟練,溶液在倒的過程中不會有丟失。

寫乙個程式去幫助無腦博士找出當 a

a 試管是空的時候,c

c 試管中硫酸銅溶液所剩量的所有可能性。

輸入包括一行,為空格分隔開的三個數,分別為整數 a,b,ca,

b,c。

輸出包括一行,公升序地列出當 a

a 試管是空的時候,c

c 試管溶液所剩量的所有可能性。

樣例輸入

2 5 10

樣例輸出

5 6 7 8 9 10

//易錯點,首先0也是一種狀態,然後就是不能在最後多加個一空格

#include#includeusing namespace std;

int vis[22][22][22],q[70],a,b,c;

void dfs(int aa,int bb,int cc)

if(aa&&ccc

int t;

if(c-cc>=aa)

t=aa;

else t=c-cc;

dfs(aa-t,bb,cc+t);

} if(bb&&aaa

int t;

if(a-aa>=bb)

t=bb;

else t=a-aa;

dfs(aa+t,bb-t,cc);

} if(bb&&ccc

int t;

if(c-cc>=bb)

t=bb;

else t=c-cc;

dfs(aa,bb-t,cc+t);

} if(cc&&aaa

int t;

if(a-aa>=cc)

t=cc;

else t=a-aa;

dfs(aa+t,bb,cc-t);

} if(cc&&bbb

int t;

if(b-bb>=cc)

t=cc;

else t=b-bb;

dfs(aa,bb+t,cc-t);

} }}int main()

cout

}

無腦博士的試管們

無腦博士有三個容量分別是a,b,c公升的試管,a,b,c分別是三個從1到20的整數,最初,a和b試管都是空的,而c試管是裝滿硫酸銅溶液的。有時,無腦博士把硫酸銅溶液從乙個試管倒到另乙個試管中,直到被灌試管裝滿或原試管空了。當然每一次灌注都是完全的。由於無腦博士天天這麼折騰,早已熟練,溶液在倒的過程中...

無腦博士的試管們 dfs搜素

無腦博士有三個容量分別是a,b,c公升的試管,a,b,c分別是三個從1到20的整數,最初,a和b試管都是空的,而c試管是裝滿硫酸銅溶液的。有時,無腦博士把硫酸銅溶液從乙個試管倒到另乙個試管中,直到被灌試管裝滿或原試管空了。當然每一次灌注都是完全的。由於無腦博士天天這麼折騰,早已熟練,溶液在倒的過程中...

計蒜客 無腦博士的試管們

傳送門 時間限制1000ms 記憶體限制65536k 無腦博士有三個容量分別是 a,b,c 公升的試管,a,b,c 分別是三個從 1 到 20 的整數,最初,a 和 b 試管都是空的,而 c 試管是裝滿硫酸銅溶液的。有時,無腦博士把硫酸銅溶液從乙個試管倒到另乙個試管中,直到被灌試管裝滿或原試管空了。...