题目描述:可乐兑换
小明的班级参加一个活动,每人要喝过一瓶可乐,恰逢可乐促销,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 }

 

相关文章:

  • 2022-01-04
  • 2021-08-27
  • 2021-05-17
  • 2021-05-25
  • 2021-07-29
  • 2022-01-04
猜你喜欢
  • 2021-11-30
  • 2021-10-14
  • 2021-04-26
  • 2021-05-23
  • 2022-12-23
  • 2021-08-18
相关资源
相似解决方案