ACM-可乐兑换

题目描述:可乐兑换
小明的班级参加一个活动,每人要喝过一瓶可乐,恰逢可乐促销,3瓶可乐空瓶可以换一瓶可乐,小明想节约钱,所以想买尽可能少的可乐让每人至少喝过一瓶可乐,问买至少多少瓶可乐够n人至少每人喝一瓶

输入

n:表示n个人要喝可乐(3 < n < = 10000)

输出

购买的可乐数和最终喝过多少瓶可乐,中间用一个空格隔开

样例输入

4
27

样例输出

3 4
19 28

 

 

思路:把买的可乐数量,喝的可乐数量和瓶子的数量保存起来,用DFS遍历,满足喝的人数即可退出搜索。

 1 // 可乐兑换.cpp : 定义控制台应用程序的入口点。
 2 //
 3 
 4 #include "stdafx.h"
 5 
 6 #include <iostream>
 7 using namespace std;
 8 
 9 int n,buy,drink,bottle;
10 
11 void DFS()
12 {
13     //cout << "buy:" << buy << "\tdrink:" << drink << "\tbottle:" << bottle << endl;
14     if (drink >= n) return;
15     
16     buy++;
17     drink++;
18     bottle++;
19     
20     if (bottle == 3)
21     {
22         drink++;
23         bottle = 1;
24     }
25     DFS();
26 
27 }
28 
29 
30 int main()
31 {
32     while (cin>>n)
33     {
34         buy = 0;
35         drink = 0;
36         bottle = 0;
37         DFS();
38         cout << buy << " " << drink<< endl;
39     }
40     return 0;
41 }

 

posted @ 2018-03-06 08:46  小小小的程序猿  阅读(242)  评论(0编辑  收藏  举报
window.onload = function(){ $("#live2dcanvas").attr("style","position: fixed; opacity: 0.7; left: 70px; bottom: 0px; z-index: 1; pointer-events: none;") }