计算机一个经典趣味问题,个小猴子边上有100根香蕉,它要走过50米才能到家,每次它最多搬50根香蕉,(多了就被压死了),它每走
1米就要吃掉一根,请问它最多能把多少根香蕉搬到家里。(提示:他可以把香蕉放下往返的走,但是必须保证它每走一米都能有香蕉吃。也可以走到n米时,放下一些香蕉,拿着n根香蕉走回去重新搬50根。)
废话不多说,上代码。
#include "stdlib.h"
#include "stdio.h"
#define TOTAL 100
#define DIST 50
#define MAXPAYLOAD 50
/*
offset 是猴子距离开始的位置
cur_num是猴子当前位置有多少香蕉
n表示从offset处搬n个香蕉继续走
x表示从当前位置决策走多少米停下
*/
int move(int offset, int cur_num, int n, int x)
{
int ret = 0;
int left, step;
if (offset == DIST)/*如果猴子到达终点,返回猴子剩余的香蕉数*/
return cur_num;
if(cur_num == 0)/*如果在当前位置没有了香蕉,表示猴子饿死,错误的决策。。。*/
return -1;
if(cur_num < x)/*如果当前位置的香蕉数小于将要走的距离,错误的决策*/
return -1;
<