题解 | #汽水瓶#

汽水瓶

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


using namespace std;

int wantdrink(int num){
    if (num == 1){
        return 0;
    }
    if (num == 2){
        return 1;
    }
    int mybottle;
    mybottle = num/3 + (num-3*(num/3));
    //当前可以兑换最多的空瓶
    return num/3+wantdrink(mybottle);
}

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

递归,目标是空瓶

  • 1、读取初始瓶子(注意输入0后break)
  • 2、在自写方法内创建新变量接收剩余空瓶
  • 这里由于剩余空瓶可能还可以交换新饮料,即套用递归
  • 3、可以交换的空瓶为 "num/3 + wantdrink(mybottle)"
  • 其中num/3是当前可以喝到的,wantdrink(mybottle)是下一轮可以喝到的,按照轮计算就比较清晰。
  • 4、最后递归闭环处理,根据例子知道两瓶还可以借一瓶子(我是老板我就不会借,哼),因此还剩两瓶的时候可以再加一瓶,即return1
全部评论

相关推荐

兄弟们,实习都是在接各种api,该怎么包装简历
仁者伍敌:感觉我自己做小项目也是各种api啊,我要怎么包装简历
点赞 评论 收藏
分享
06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
zYvv:双一流加大加粗再标红,然后广投。主要是获奖荣誉不够,建议开始不用追求大厂,去别的厂子刷下实习。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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