本文阐述了用PHP实现的回溯算法。分享给大家参考,如下:
问题:
一头大牛驼有2袋米,一头中牛驼有1袋米,两头小牛有1袋米。100袋大米需要多少头大牛、中牛、小牛?
实现代码:
?Php/* * k=2x y 1/2z值范围* 0=x=1/2k * 0=y=k * 0=z=2k * x,y,z最大2k */$ DaMi=100;$ result=array();函数isOk($t,$daMi,$ result){/* { { */$ total=0;$hash=数组();$ hash[1]=2;$ hash[2]=1;$ hash[3]=0.5;for($ I=1;$ I=$ t;$ I){ $ total=$ result[$ I]* $ hash[$ I];} if($ total=$ DaMi){ return true;}返回false}/* } } } */函数回溯($t,$daMi,$ result){/* { *//递归退出if($ t ^ 3){//输出最优解if($ DaMi==(2 * $ result[1]$ result[2]0.5 * $ result[3]){ echo '最优解,rice : $ } return} for($ I=0;$ i=2 * $ daMi$ I){ $ result[$ t]=$ I;//修剪if (isok ($ t,$ dami,$ result)){回溯($ t ^ 1,$ dami,$ result);} $ result[$ t]=0;}}/*}}}*/backtrack(1,$daMi,$ result);运行结果如下:
更多对PHP相关内容感兴趣的读者可以查看本网站专题:《PHP数据结构与算法教程》、《php程序设计算法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》、《PHP数学运算技巧总结》、0103010
希望本文对PHP编程有所帮助。