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 }

 

转载于:https://www.cnblogs.com/x739400043/p/8512316.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值