農民約翰有三個容量分別是a,b,c公升的桶,a,b,c分別是三個從1到20的整數,
最初,a和b桶都是空的,而c桶是裝滿牛奶的。有時,約翰把牛奶從乙個桶倒到另乙個桶中,直到被灌桶裝滿或原桶空了。當然每一次灌注都是完全的。由於節約,牛奶不會有丟失。
寫乙個程式去幫助約翰找出當a桶是空的時候,c桶中牛奶所剩量的所有可能性。
input format:
(file milk3.in)
單獨的一行包括三個整數a,b和c。
output format:
(file milk3.out)
只有一行,公升序地列出當a桶是空的時候,c桶牛奶所剩量的所有可能性。
直接上bfs就行了,注意判重。
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7const
int max=10000;8
#define hash(t) h[t.a][t.b][t.c]
9using
namespace
std;
10struct statedata;
11bool h[21][21][21],h_2[21];//
雜湊表
12int a,b,c,point=0
,ans[max];
13void
bfs();
14void
check(state t);
15int
main()
1627
void
bfs()
28}v=u;
41if (v.b>=a-v.a) }v=u;
42if (v.a>=c-v.c) }v=u;
43if (v.c>=a-v.a) }v=u;
44if (v.c>=b-v.b) }v=u;
45if (v.b>=c-v.c) }v=u;
46//
倒不滿
47if (v.a0;if (hash(v)==0) }v=u;
48if (v.b0;if (hash(v)==0) }v=u;
49if (v.a0;if (hash(v)==0) }v=u;
50if (v.c0;if (hash(v)==0) }v=u;
51if (v.c0;if (hash(v)==0) }v=u;
52if (v.b0;if (hash(v)==0) }v=u;53}
54}55void
check(state t)
5662
return
;63 }
1 4 4 Mother s Mil 母親的牛奶
農民約翰有三個容量分別是a,b,c公升的桶,a,b,c分別是三個從1到20的整數,最初,a和b桶都是空的,而c桶是裝滿牛奶的。有時,約翰把牛奶從乙個桶倒到另乙個桶中,直到被灌桶裝滿或原桶空了。當然每一次灌注都是完全的。由於節約,牛奶不會有丟失。寫乙個程式去幫助約翰找出當a桶是空的時候,c桶中牛奶所剩...
Mother s Mil 母親的牛奶
農民約翰有三個容量分別是a,b,c公升的桶,a,b,c分別是三個從1到20的整數,最初,a和b桶都是空的,而c桶是裝滿牛奶的。有時,約翰把牛奶從乙個桶倒到另乙個桶中,直到被灌桶裝滿或原桶空了。當然每一次灌注都是完全的。由於節約,牛奶不會有丟失。寫乙個程式去幫助約翰找出當a桶是空的時候,c桶中牛奶所剩...
Mother s Mil 母親的牛奶
農民約翰有三個容量分別是a,b,c公升的桶,a,b,c分別是三個從1到20的整數,最初,a和b桶都是空的,而c桶是裝滿牛奶的。有時,約翰把牛奶從乙個桶倒到另乙個桶中,直到被灌桶裝滿或原桶空了。當然每一次灌注都是完全的。由於節約,牛奶不會有丟失。寫乙個程式去幫助約翰找出當a桶是空的時候,c桶中牛奶所剩...