題目:
無腦博士有三個容量分別是 a,b,c 公升的試管,a,b,c 分別是三個從 1 到 20的整數,最初,a和 b試管都是空的,而 c 試管是裝滿硫酸銅溶液的。有時,無腦博士把硫酸銅溶液從乙個試管倒到另乙個試管中,直到被灌試管裝滿或原試管空了。當然每一次灌注都是完全的。由於無腦博士天天這麼折騰,早已熟練,溶液在倒的過程中不會有丟失。
寫乙個程式去幫助無腦博士找出當 a 試管是空的時候,c 試管中硫酸銅溶液所剩量的所有可能性。
輸入包括一行,為空格分隔開的三個數,分別為整數 a,b,c。
輸出包括一行,公升序地列出當 a試管是空的時候,c試管溶液所剩量的所有可能性。
樣例輸入
2 5 10
樣例輸出
5 6 7 8 9 10
型別:dfs,動態規劃
**:
#include #include#include
using
namespace
std;
inta,b,c;
//res[a][b] 儲存a b中液體為a b的情況是否遍歷過
int res[21][21
];//
深搜 回溯
//引數為a b c 試管的液體總量
void backtrace(int a,int b,int
c)
else
if(res[a][b] == 0
)backtrace(a,b,c);
a =a0;
b =b0;
}if(c > 0)
else
if(res[a][b] == 0
)backtrace(a,b,c);
a =a0;
c =c0;}}
if(b < b)
else
if(res[a][b] == 0
)backtrace(a,b,c);
a =a0;
b =b0;
}if(c > 0)
else
if(res[a][b] == 0
)backtrace(a,b,c);
b =b0;
c =c0;}}
if(c < c)
else
if(res[a][b] == 0
)backtrace(a,b,c);
a =a0;
c =c0;
}if(b > 0)
else
if(res[a][b] == 0
)backtrace(a,b,c);
b =b0;
c =c0;}}
}int
main()
cout << endl;
}*/int k=0
;
for(int i=b; i >= 0; i--)
else}}
cout
}
ps: 注意輸出格式,最後沒有空格.....
計蒜客 無腦博士的試管們
傳送門 時間限制1000ms 記憶體限制65536k 無腦博士有三個容量分別是 a,b,c 公升的試管,a,b,c 分別是三個從 1 到 20 的整數,最初,a 和 b 試管都是空的,而 c 試管是裝滿硫酸銅溶液的。有時,無腦博士把硫酸銅溶液從乙個試管倒到另乙個試管中,直到被灌試管裝滿或原試管空了。...
計蒜客 無腦博士的試管們 (bfs 模擬)
無腦博士有三個容量分別是 a,b c公升的試管,a,b,ca,b,c 分別是三個從 1 到 2 0 的整數,最初,a 和 b試管都是空的,而 c 試管是裝滿硫酸銅溶液的。有時,無腦博士把硫酸銅溶液從乙個試管倒到另乙個試管中,直到被灌試管裝滿或原試管空了。當然每一次灌注都是完全的。由於無腦博士天天這麼...
無腦博士的試管們
無腦博士有三個容量分別是a,b,c公升的試管,a,b,c分別是三個從1到20的整數,最初,a和b試管都是空的,而c試管是裝滿硫酸銅溶液的。有時,無腦博士把硫酸銅溶液從乙個試管倒到另乙個試管中,直到被灌試管裝滿或原試管空了。當然每一次灌注都是完全的。由於無腦博士天天這麼折騰,早已熟練,溶液在倒的過程中...