題目:兩元一瓶啤酒,兩個啤酒瓶可換一瓶啤酒,四個啤酒瓶蓋可換一瓶啤酒,求10元可以買幾瓶啤酒。
1、不允許借瓶子、瓶蓋:
#include//n個瓶,m個瓶蓋
int getcount(int n,int m)
int a = n / 2;
int b = n % 2;
int c = m / 4;
int d = m % 4;
return n-b + getcount(a+c+b,a+c+ d);
}void main()
執行結果:
剩餘瓶子1個,瓶蓋1個 2元 買 1瓶啤酒
剩餘瓶子1個,瓶蓋3個 4元 買 3瓶啤酒
剩餘瓶子1個,瓶蓋3個 6元 買 7瓶啤酒
剩餘瓶子1個,瓶蓋3個 8元 買11瓶啤酒
剩餘瓶子1個,瓶蓋3個 10元 買15瓶啤酒
請按任意鍵繼續. . .
2、允許借瓶子、瓶蓋,用完即還。
#include//n個瓶,m個瓶蓋
int getcount(int n,int m)
int a = n / 2;//2個瓶子換1瓶啤酒
int b = n % 2;//剩餘瓶子
int c = m / 4;//4個瓶蓋換1瓶啤酒
int d = m % 4;//剩餘瓶蓋
if(b==1)//剩1個瓶子時暫借1個瓶子,用後即還
if(d==3)//剩3個瓶蓋時暫借1個瓶蓋,用後即還
if(d==2)//剩2個瓶蓋,暫借2個瓶蓋、1個瓶子,用後即還
return n-b + getcount(a+c+b,a+c+ d);
}void main()
執行結果:
剩餘瓶子0個,瓶蓋0個 2元 買 4瓶啤酒
剩餘瓶子0個,瓶蓋0個 4元 買 8瓶啤酒
剩餘瓶子0個,瓶蓋0個 6元 買12瓶啤酒
剩餘瓶子0個,瓶蓋0個 8元 買16瓶啤酒
剩餘瓶子0個,瓶蓋0個 10元 買20瓶啤酒
請按任意鍵繼續. . .
c語言呼叫cpp函式 C語言 函式的遞迴呼叫
乙個函式在呼叫的過程 現直接或者間接呼叫該函式本身的情況,稱為遞迴呼叫,這種函式稱為遞迴函式 在寫遞迴函式時,需要解決如下兩個問題 1 遞迴的出口條件 2 遞迴公式 遞迴函式的 一般為 if 遞迴出口條件 返回符合出口條件的函式值或輸出結果 else 遞迴公式 雖然演算法一致,但n不同,y不同,在記...
c語言 DFS演算法 遞迴呼叫
深度優先搜尋屬於圖演算法的一種,英文縮寫為dfs即depth first search.其過程簡要來說是對每乙個可能的分支路徑深入到不能再深入為止,而且每個 節點只能訪問一次 深度優先演算法dfs 模型 以二維直角座標來舉例 void dfs int dep dep表示深度 方向向量,x,y 周圍的...
C語言 函式的遞迴呼叫
1 可以把要解決的問題轉化為乙個規模較小的新問題,而這個新問題的解決方法仍與原來的解決方法相同。2 必定要有乙個明確的結束遞迴的條件。總而言之,可歸納為 遞迴呼叫過程 兩個階段 遞推階段 將問題不斷地分解為新的子問題,逐漸從未知的向已知的方向推測,最終達到已知的條件,即遞迴結束條件,這時遞推階段結束...