题解 | #汽水瓶#

汽水瓶

http://www.nowcoder.com/practice/fe298c55694f4ed39e256170ff2c205f

思路

由题意可知:

  • n=0 的时候,有 0 瓶
  • n=1 的时候,有 0 瓶
  • n=2 的时候,有 1 瓶
  • n=3 的时候,有 1 瓶
  • n=4 的时候,有 2 瓶
  • ......

由此,我们设 f(n) 为小明手上有 n 个空瓶的时候,可以得到的汽水瓶数。根据规则我们可以知道 f(n) = f(n/3+n%3) + n/3; 所以,自底向上即可计算出结果。

代码

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    int n;
    vector<int> nums(101);
    nums[0] = 0;
    nums[1] = 0;
    nums[2] = 1;
    while( true )
    {
        cin >> n;
        if( 0 == n )
            break;
        if( n < 3 )
            cout << nums[n] << endl;
        else
        {
            for( int i = 3; i <= n; i++ )
            {
                int tmp = i / 3;
                nums[i] = nums[tmp+i%3] + tmp;
            }
            cout << nums[n] << endl;
        }
    }
    return 0;
}
全部评论

相关推荐

努力的小明a:项目看着很眼熟,施磊老师吧,我也学的这个😋我当时是把rpc框架做成了一个分布式网盘,这是一个项目,然后muduo库做成集群即时通讯,又用QT做了个交互的客户端,这样又一个项目,然后一个轻量redis,一个CAD,总共四个项目,投了三个月就今天2月份一个小厂Qt offer,然后后面想开了,Qt啥的都能干,这个月get了个北京大厂的offer,做java后端,人生就是这么魔幻,现在就在去北京入职的路上
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务