• 算法 汽水瓶


    题目描述

    有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?

    输入描述:

    输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=100),表示小张手上的空汽水瓶数。n=0表示输入结束,你的程序不应当处理这一行。

    输出描述:

    对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。

    示例1

    输入

    复制
    3
    10
    81
    0
    

    输出

    复制
    1
    5
    40

    思路:
    3个空瓶子换1瓶汽水+1空瓶子,2空瓶子换1瓶汽水+0空瓶子,1空瓶子换0瓶汽水
    f(1)=0
    f(2)=1
    f(3)=1+1
    f(4)=f(3-2)+1
    f5(5)=f(5-2)+1
    ````
    fn = f(n-2)+1


    #include <iostream>
    #include <algorithm>
    #include <string.h>
    #include <string>
    #include <map>
    using namespace std;

    int f(int n)
    {
      if(n==1) return 0;
      if(n==2) return 1;
      return f(n-2)+1;
    }

    int main()
    {
      int n;
      while(cin >> n){
      if(n==0)
        break;
      cout<<f(n)<<endl;
      }
      return 0;
    }

    参考:https://blog.csdn.net/u011544909/article/details/79839943

  • 相关阅读:
    datagridview中读取数据判断+考勤每月上班天数判断
    dateTimePicker日期比较+时间段内查询+员工查询薪资步骤+datagridview
    c#word 存取
    位图去空白
    过桥问题
    Dominos 2(DFS)(容器)
    poj 3421(三分)
    poj 3186(DP)
    安装Ubuntu
    poj 3273(二分)
  • 原文地址:https://www.cnblogs.com/liuruoqian/p/11672111.html
Copyright © 2020-2023  润新知