【题目】有只猴子在树林采了100根香蕉堆成一堆,猴子家离香蕉堆50米,猴子打算把香蕉背回家,每次最多能背50根,可是猴子嘴馋,每走一米要吃一根香蕉,问猴子最多能背回家几根香蕉。

本文主要是介绍【题目】有只猴子在树林采了100根香蕉堆成一堆,猴子家离香蕉堆50米,猴子打算把香蕉背回家,每次最多能背50根,可是猴子嘴馋,每走一米要吃一根香蕉,问猴子最多能背回家几根香蕉。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 文件名:[作业]
  • 作者:〈漆黑〉
  • 描述:〈 猴子来了
  • 有只猴子在树林采了100根香蕉堆成一堆,猴子家离香蕉堆50米,猴子打算把香蕉背回家,每次最多能背50根,可是猴子嘴馋,每走一米要吃一根香蕉,问猴子最多能背回家几根香蕉。
  • 如果只能算整根的话,猴子最后可以搬回家16根,中间路上不得已扔掉两根,或者全部吃完。
  • 猴子走到16米的时候,还剩34根,放下18根香蕉,拿着16根往回走,走到香蕉堆正好吃完,再拿上那50根香蕉往家走,走到16米的时候,那里放着18根香蕉,用那18根补充满手里的,再往家走,走到家,剩16根,16米处扔掉两根
  • 猴子走到17米的时候,还剩33根,放下16根香蕉,拿着17根往回走,走到香蕉堆正好吃完,再拿上那50根香蕉往家走,走到17米的时候,那里放着16根香蕉,用那16根补充手里的,手里有49根,距离家还有33米,再往家走,走到家,剩16根 〉
  • 创建时间:2019.7.24
  • 已完善
/****************************
* 文件名:[题目]
* 作者:〈漆黑〉
* 描述:〈	猴子	〉
* 创建时间:2019.1.5
****************************/
import java.util.Scanner;public class Test {public static void main(String[] args){System.out.println( "猴子100个香蕉,距离家50米,一次最多搬50根,搬到家最多" + monkey(100, 50, 50) + "根。");}static int monkey(int sum, int dis, int carry){//sum个香蕉,距离dis米,一次最多搬carry个香蕉,均大于0整数,当它有超过50个时,搬50个走一米把剩下的放下再回头搬其它的过来,每走一米要吃到3个香蕉if(carry < 2) return 0;//一次搬一个只能搬0个if(carry == 2){//一次搬两个if(dis > 1) return 0;//距离>=2米,只能搬0个if(sum < 2) return 0;//香蕉只有一个,只能搬0个return 1;//否则可以搬1个到家}if(sum <= dis) return 0;//香蕉数量 < 距离if(carry > sum) return sum - dis;//一次能全搬完while(dis > 0){if(sum % carry <= 2) sum = sum - (sum % carry);//如果最后剩下1到2个香蕉,则舍去sum -= (2 * ((sum - 1) / carry) + 1);//如果承重为carry,剩余香蕉为sum,当sum > carry时,把香蕉搬1米要消耗 2*((sum-1)/carry) + 1)dis--;}return sum;}
}

在这里插入图片描述

这篇关于【题目】有只猴子在树林采了100根香蕉堆成一堆,猴子家离香蕉堆50米,猴子打算把香蕉背回家,每次最多能背50根,可是猴子嘴馋,每走一米要吃一根香蕉,问猴子最多能背回家几根香蕉。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/207630

相关文章

题目1254:N皇后问题

题目1254:N皇后问题 时间限制:1 秒 内存限制:128 兆 特殊判题:否 题目描述: N皇后问题,即在N*N的方格棋盘内放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在同一斜线上。因为皇后可以直走,横走和斜走如下图)。 你的任务是,对于给定的N,求出有多少种合法的放置方法。输出N皇后问题所有不同的摆放情况个数。 输入

题目1380:lucky number

题目1380:lucky number 时间限制:3 秒 内存限制:3 兆 特殊判题:否 提交:2839 解决:300 题目描述: 每个人有自己的lucky number,小A也一样。不过他的lucky number定义不一样。他认为一个序列中某些数出现的次数为n的话,都是他的lucky number。但是,现在这个序列很大,他无法快速找到所有lucky number。既然

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

【408数据结构】散列 (哈希)知识点集合复习考点题目

苏泽  “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家    知识点 1. 散列查找 散列查找是一种高效的查找方法,它通过散列函数将关键字映射到数组的一个位置,从而实现快速查找。这种方法的时间复杂度平均为(

【附答案】C/C++ 最常见50道面试题

文章目录 面试题 1:深入探讨变量的声明与定义的区别面试题 2:编写比较“零值”的`if`语句面试题 3:深入理解`sizeof`与`strlen`的差异面试题 4:解析C与C++中`static`关键字的不同用途面试题 5:比较C语言的`malloc`与C++的`new`面试题 6:实现一个“标准”的`MIN`宏面试题 7:指针是否可以是`volatile`面试题 8:探讨`a`和`&a`

day-50 求出最长好子序列 I

思路 二维dp,dp[i][h]表示nums[i] 结尾,且有不超过 h 个下标满足条件的最长好子序列的长度(0<=h<=k),二维数组dp初始值全为1 解题过程 状态转换方程: 1.nums[i]==nums[j],dp[i,h]=Math.max(dp[i,h],dp[j,h]+1) 2.nums[i]!=nums[j],dp[i,h]=Math.max(dp[i,h],dp[j,h-1

码蹄集部分题目(2024OJ赛9.4-9.8;线段树+树状数组)

1🐋🐋配对最小值(王者;树状数组) 时间限制:1秒 占用内存:64M 🐟题目思路 MT3065 配对最小值_哔哩哔哩_bilibili 🐟代码 #include<bits/stdc++.h> using namespace std;const int N=1e5+7;int a[N],b[N],c[N],n,q;struct QUERY{int l,r,id;}que

【LeetCode热题100】前缀和

这篇博客共记录了8道前缀和算法相关的题目,分别是:【模版】前缀和、【模版】二维前缀和、寻找数组的中心下标、除自身以外数组的乘积、和为K的子数组、和可被K整除的子数组、连续数组、矩阵区域和。 #include <iostream>#include <vector>using namespace std;int main() {//1. 读取数据int n = 0, q = 0;ci

nyoj 1072 我想回家

一道相当题目描述相当扯的题。 这道题目的描述最后说的是求出到达最后一个点的最短距离,所以输入数据最后输入的城堡的坐标是没用的。 就是先求出两点之间的距离,若不大于村落间距离,并且不大于最后的距离限制 l ,则在两点间建边。 最后任意方法求出最短路即可。 #include <iostream>#include<stdio.h>#include<vector>#include<

牛客小白月赛100部分题解

比赛地址:牛客小白月赛100_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ A.ACM中的A题 #include<bits/stdc++.h>using namespace std;#define ll long long#define ull = unsigned long longvoid solve() {ll a,b,c;cin>>a>>b>