1 4 4 Mother s Mil 母親的牛奶

2021-08-28 17:15:03 字數 1260 閱讀 5508

農民約翰有三個容量分別是a,b,c公升的桶,a,b,c分別是三個從1到20的整數,最初,a和b桶都是空的,而c桶是裝滿牛奶的。有時,約翰把牛奶從乙個桶倒到另乙個桶中,直到被灌桶裝滿或原桶空了。當然每一次灌注都是完全的。由於節約,牛奶不會有丟失。 寫乙個程式去幫助約翰找出當a桶是空的時候,c桶中牛奶所剩量的所有可能性。

單獨的一行包括三個整數a,b和c。

只有一行,列出當a桶是空的時候,c桶牛奶所剩量的所有可能性。

8 9 10
1 2 8 9 10
最開始的時候想簡單了,後來細想發現一共有6種方式,12種情況。

1)6種方式分別為:

a->b,b->a;

a->c,c->a;

b->c,c->b;

2)12種情況是因為:

每種方式都有兩種可能,如第一種情況a->b(把a桶往b桶裡倒),依題僅有兩種情況停止:

要麼把a倒空,要麼b被倒滿。其他方式也是如此,所以一共有12種情況。

把這6種方式,12種情況想清楚了就很好做了,設二維陣列logo[a][b]來標記該a,b桶裡剩餘量的情況是否出現過,若出現過則無需再繼續下去,另設陣列s存所有c桶可能出現的牛奶量。

#include#include#include#include#define fori(a,b) for(int i=a;i<=b;i++)

#define forj(a,b) for(int j=a;j<=b;j++)

#define mem(a,b) memset(a,b,sizeof(a))

using namespace std;

int va,vb,vc,k=0,logo[21][21],s[1000000];

void dfs(int a,int b,int c)

int main()

return 0;

}

與第一種思路大致相同,區別就在於用map進行了優化,同時二維陣列logo[a][b]的值不再是僅僅標記此情況是否出現過,它的值表示的是a,b桶量固定時,此時c桶的牛奶量。

#include#include#include#include#includetypedef long long ll;

#define fori(a) for(ll i=0;im;

int logo[30][30];

void init()

void dfs(int x,int y,int z)

int main()

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

14 4 選單功能

選單功能就是與使用者的溝通介面。1 在workermanager.h標頭檔案中新增show menu 成員函式。class workermanager 2 在workermanager.cpp中實現show menu 成員函式。其實這個函式就是在螢幕中把選單介面列印出來,沒什麼技術含量。顯示選單 v...