美文网首页
2018-03-28 一个小问题的算法

2018-03-28 一个小问题的算法

作者: SGWoodEgg | 来源:发表于2018-03-14 17:28 被阅读0次

    今天在朋友圈看到一个问题:
    有个东西他的期限只有30天 然后你只有180块钱 去买这个东西之后你每天能领十块钱.等到你18天之后你又可以买这个东西买了之后你又可以每天领十块钱。如此累计要多久自己的手上才能有八个这样的东西.(注意每个东西期限只有30天)

    我想了一下似乎可以用计算机解决,然后就自己用算法实现了一下,用到了循环和容器
    代码如下

    int money = 180;//初始钱
        vector<int> product;//购买产品的容器
        int day = 0;//天数
    
        while (product.size() < 8)
        {
    
            for (vector<int>::iterator i = product.begin(); i != product.end();)
            {
                if (*i < 1)
                {
                    i = product.erase(i);
                }
                else
                {
                    money += 10;
                    (*i)--;
                    ++i;
                }
            }
            while (money >= 180)
            {
                for (int i = 0; i < money / 180; i++)
                {
                    product.push_back(30);
                }
                money = money % 180;
    
                int index = 0;
                for (int leftDay : product)
                {
                    if (leftDay == 30)
                    {
                        money += 10;
                        product[index]--;
                    }
                    index++;
                }
            }
            day++;
            CCLOG("%ddays have money::%d,the number of financial products is%d", day, money, product.size());
        }
        CCLOG("the %d days have 8 financial products", day);
    

    根据我们输出我们可以看到第59天会得到8个;


    image.png

    相关文章

      网友评论

          本文标题:2018-03-28 一个小问题的算法

          本文链接:https://www.haomeiwen.com/subject/ijtqqftx.html