重新拾起遞迴
t1倒牛奶農民約翰有三個容量分別是a,b,c公升的桶,a,b,c分別是三個從1到20的整數,
最初,a和b桶都是空的,而c桶是裝滿牛奶的。有時,約翰把牛奶從乙個桶倒到另乙個桶中,直到被灌桶裝滿或原桶空了。當然每一次灌注都是完全的。由於節約,牛奶不會有丟失。
寫乙個程式去幫助約翰找出當a桶是空的時候,c桶中牛奶所剩量的所有可能性。
輸入格式 input format
單獨的一行包括三個整數a,b和c。
輸出格式 output format
只有一行,公升序地列出當a桶是空的時候,c桶牛奶所剩量的所有可能性。
樣例輸入 sample input
sample input 1
8 9 10
sample input 2
2 5 10
樣例輸出 sample output
sample output 1
1 2 8 9 10
sample output 2
5 6 7 8 9 10
時間限制 time limitation
1s注:
顯而易見,這是一道遞迴題。首個狀態是a、b桶是空的,c是滿的。現在我們要求的是當a桶為空的時候,所有c桶的可能性。那麼我們需要乙個遞迴來完成這個倒牛奶的過程。然而,問題來了,當我們發現a桶為空的時候,怎麼確定這時候的c的情況是否已經找到了呢?並且,遞迴結束的條件是什麼呢?仔細一想,如果我們只考慮a空來結束遞迴,那第一重就會結束。可是這道題不像之前的,有什麼邊界限制。那麼我們只能用乙個bool型的陣列來記錄我們已經找過的情況,如果所有的情況找到了,那麼就結束遞迴。因為是三個桶的狀態,所以我們需要乙個三維的陣列。
偽**:
void fac(int a,int b,int c)
if(f[a][b][c])
return ;
f[a][b][c]=1;
if(a==0)
n[c]=1;
if(a-a>=c&&c>0)
fac(a+c,b,0);
else if(a-a0)
fac(a,b,c-(a-a));
if(b-b>=c&&c>0)
fac(a,b+c,0);
else if(b-b0)
fac(a,b,c-(b-b));
if(b-b>a&&a>0)
fac(0,b+a,c);
else if(b-b0)
fac(a-(b-b),b,c);
if(c-c>a&&a>0)
fac(0,b,c+a);
else if(c-c0)
fac(a-(c-c),b,c);
if(a-a>b&&b>0)
fac(a+b,0,c);
else if(a-a0)
fac(a,b-(a-a),c);
if(c-c>b&&b>0)
fac(a,0,c+b);
else if(c-c0)
fac(a,b-(c-c),c);
return;
#includeusingview codenamespace
std;
inta,b,c;
int n[30
];bool f[30][30][30
];int
x;bool a1=1,a2=1,a3=1,a4=1,a5=1,a6=1
;void fac(int a,int b,int
c)
if(a-a>=c&&c>=0
) fac(a+c,b,0
);
else
if(c-(a-a)>=0&&c>=0
) fac(a,b,c-(a-a));
if(b-b>=c&&c>=0
) fac(a,b+c,0
);
else
if(c-(b-b)>=0&&c>=0
) fac(a,b,c-(b-b));
if(a-a>=b&&b>=0
) fac(a+b,0
,c);
else
if(b-(a-a)>=0&&b>=0
) fac(a,b-(a-a),c);
if(c-c>=b&&b>=0
) fac(a,
0,c+b);
else
if(b-(c-c)>=0&&b>=0
) fac(a,b-(c-c),c);
if(c-c>=a&&a>=0
) fac(
0,b,c+a);
else
if(a-(c-c)>=0&&a>=0
) fac(a-(c-c),b,c);
if(b-b>=a&&a>=0
) fac(
0,b+a,c);
else
if(a-(b-b)>=0&&a>=0
) fac(a-(b-b),b,c);
return
;
}int
main()
最終將bool n陣列裡面的true的下標都輸入就可以了。
2018-03-14 09:15
kgxpbqbyt 閱讀(
...)
編輯收藏
重新拾起VS2008加入戰鬥
前3個月沒有很系統的來學習c 這次考試更是考的非常的糟糕感覺自己對不起很多人,特別是自己.今天同學過來,結果三個月的專案經驗,感覺已經提供了好多的了,今天正好是考研的日子,想想自己,學習沒學好,程式上也沒學好,真的不知道自己該怎麼辦的好.買了30號的票,不想太早回家,發現自己真的沒臉回家,最近幾天好...
Djago模板拾起
在view中使用template 首先在settings.py中配置模板檔案的路徑。template dirs home django mysite templates 1.變數的使用 2.條件語句使用 if 可以使用and,or,not來組織你的邏輯。但不允許and和or同時出現的條件語句中。沒有...
我想拾起英語了。
倆次的六級考試失敗讓我這次放棄了參考六級,在放棄了 後,我也放棄了學習英語,想著花精力與時間在專業課上,近期發現,我現在的英語程度,連四級都達不到,然後有一種想要重新學學單詞的想法了,不為別的,也算是自己的乙個小興趣,乙個小目標吧!再來說說自己這段時間準備的軟體設計師,emmmmm對於信管專業,軟體...