USACO 1 4 4 母親的牛奶

2022-05-27 17:27:13 字數 1365 閱讀 6572

農民約翰有三個容量分別是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 7

const

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桶中牛奶所剩...