本文介绍了php实现的回溯算法:



问题:



一头牛有2袋大米,一头牛,一只骆驼,一袋米,两个小牛和一袋米。这100袋大米你需要多少头奶牛,你需要多少头母牛和几头小牛



实现代码:




< PHP
*
* K = 2X + Y + 1 / 2Z
值的范围
* 0 < < = 1 2K / 2K
* 0 < y=k
* 0
* x,y,z最大值2K
* /
D = 100美元;
结果=数组();
功能即可(美元美元美元,大米,结果)
{
总计= 0;
$ =数组();
$ { 1 } = 2;
$ { 2 } = 1;
$ { 3 } = 0.5;
($ i = 1;$ i = $;
{
总= $结果i $ };
}
如果(美元总额为D)
{
返回true;
}
返回false;
} }
函数返回(美元美元美元,大米,结果)
{
递归/导出
如果($ 3)
{
输出最优解
如果($ D = =(2×$结果{ 1 } + $结果{ 2 } + 0.5 * $结果{ 3 }))
{
回声最优解,赖斯:$ { Dami },丹尼尔:$结果{ 1 },中国牛:$结果{ 2 },小牛:$结果{ 3 } ;
}
返回;
}
为($我= 0美元= 2 *;我的<<美元美元Dami;i++)
{
$结果;
修剪
如果(即可($ T,D美元美元,结果))
{
回溯($ T + 1美元美元,大米,结果);
}
$结果{ $ } = 0;
}
} }
回溯(1美元美元,大米,结果);
>




运行结果如下:



关于PHP相关内容的更多读者感兴趣的读者可以看到特别站:PHP数据结构和算法教程

希望本文能对PHP程序设计有所帮助。