• 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 << "	drink:" << drink << "	bottle:" << 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 }
  • 相关阅读:
    面向过程
    生成器
    迭代器
    装饰器
    函数及嵌套
    字符编码与文件操作
    linux_ssh
    LNMP
    BZOJ 3238: [Ahoi2013]差异
    BZOJ 3998: [TJOI2015]弦论
  • 原文地址:https://www.cnblogs.com/x739400043/p/8512316.html
Copyright © 2020-2023  润新知