zoukankan      html  css  js  c++  java
  • 算法 汽水瓶

    题目描述

    有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是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

  • 相关阅读:
    PAT——1069. 微博转发抽奖
    PAT——1068. 万绿丛中一点红
    PAT——1066. 图像过滤
    PAT——1065. 单身狗
    PAT——1064. 朋友数
    PAT——1063. 计算谱半径
    PAT——1062. 最简分数
    PAT——1061. 判断题
    PAT——1060. 爱丁顿数
    PAT——1059. C语言竞赛
  • 原文地址:https://www.cnblogs.com/liuruoqian/p/11672111.html
Copyright © 2011-2022 走看看