1. 程式人生 > >ccf 2017-9-1 打醬油(dfs)

ccf 2017-9-1 打醬油(dfs)

搜索 問題 ++ font spa cin center div one

ccf 2017-9-1 打醬油(dfs)

問題描述   小明帶著N元錢去買醬油。醬油10塊錢一瓶,商家進行促銷,每買3瓶送1瓶,或者每買5瓶送2瓶。請問小明最多可以得到多少瓶醬油。 輸入格式   輸入的第一行包含一個整數N,表示小明可用於買醬油的錢數。N是10的整數倍,N不超過300。 輸出格式   輸出一個整數,表示小明最多可以得到多少瓶醬油。 樣例輸入 40 樣例輸出 5 樣例說明   把40元分成30元和10元,分別買3瓶和1瓶,其中3瓶送1瓶,共得到5瓶。 樣例輸入 80 樣例輸出 11 樣例說明   把80元分成30元和50元,分別買3瓶和5瓶,其中3瓶送1瓶,5瓶送2瓶,共得到11瓶。
 1 #include<iostream>
 2
using namespace std; 3 const int devide[3] = {1,3,5}; 4 int ans; 5 void dfs(int m,int b) 6 { 7 if(m==0) 8 { 9 if(b>ans) 10 ans = b; 11 return; 12 } 13 for(int i=0;i<3;i++) 14 { 15 if(m>=devide[i]) 16 dfs(m-devide[i],b+devide[i]+i);
17 } 18 } 19 20 int main() 21 { 22 int money; 23 while(cin>>money) 24 { 25 money = money/10;//能買幾瓶 26 ///三入口的深度優先搜索樹 27 ans = money; 28 dfs(money,0); 29 cout<<ans<<endl; 30 } 31 return 0; 32 }

技術分享圖片

ccf 2017-9-1 打醬油(dfs)