C语言,猴子背香蕉问题怎么解决总共100个香蕉50米上限拿50个每走一米吃一个回去不吃

Python024

C语言,猴子背香蕉问题怎么解决总共100个香蕉50米上限拿50个每走一米吃一个回去不吃,第1张

假设猴子往前走x米,把一部分香蕉转移到x米处,留x个香蕉路上吃,然后折返,重复如此,把所有香蕉先搬到x米处,显然每次搬运会浪费2x个香蕉,最后一次浪费x个,由此易知搬运的次数越少越好,我们定为2次,那么每次浪费3x个香蕉,还剩100-3x个香蕉,还需要走50-x米,显然剩下的路一次走完要更优,那么最后留下的香蕉数是 min(100-3x,50)-(50-x) 求个最大值 易知为x=17时 原式求值为16

#include<stdio.h>

int main(){

int pear=3

int org=2

int ban=0.5

int i , j , k        //i , j , k分别表示梨、橙子、香蕉的数量(单位斤)

for( i=0i<45i++){

for( j=0j<45j++){

for( k=0k<45k+=2){

if( pear*i + org*j + ban*k == 45 &&i+j+k==45){

printf("梨子:%d,橙子:%d,香蕉:%d\n" , i , j , k)

}

}

}

}

}