PHP解决过桥问题

过桥问题:

在漆黑的夜里,四位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,四个人一共只带了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,四人所需要的时间分别是1、2、5、7分钟;而如果两人同时过桥,所需要的时间就是走得比较慢的那个人单独行动时所需的时间。问题是,如何设计一个方案,让这四人尽快过桥。

PHP代码:

<?php
//////////////////////////////
///author:彷徨一小生 /////
///www.cnphper.com////
///PHP解决过桥问题 ////
///////////////////////////

$data = array(1,2,5,9);//此处数组$data的元素个数即为对应过桥的人数,可以任意修改(>1)
sort_data($data);
$num = count($data);

if($num == 2)
{
$costtime = $data[1];
}
elseif($num == 3)
{
$costtime = 2*$data[0]+$data[1]+$data[2];
}
elseif($num > 3)
{
$costtime = get_result($data,$num,0);
}

echo "最短的过桥时间为".$costtime;

function get_result($data,$num,$costtime)
{
if(2*$data[1]<$data[0]+$data[$num-2])
{
$costtime+= 2*$data[1]+$data[0]+$data[$num-1];
array_pop($data);
array_pop($data);
$num = count($data);
if($num>3)
{
get_result($data,$num,$costtime);
}
elseif($num==3)
{
$costtime+= 2*$data[0]+$data[1]+$data[2];
return $costtime;
}
elseif($num==2)
{
$costtime+= $data[1];
return $costtime;
}
}
else
{
$costtime+= 2*$data[0]+$data[$num-2]+$data[$num-1];
array_pop($data);
array_pop($data);
$num = count($data);
if($num>3)
{
get_result($data,$num,$costtime);
}
elseif($num==3)
{
$costtime+= 2*$data[0]+$data[1]+$data[2];
return $costtime;
}
elseif($num==2)
{
$costtime+= $data[1];
return $costtime;
}
}

}

function sort_data(&$data)
{
sort($data);
reset($data);
}

?>

时间: 2024-11-16 05:21:06

PHP解决过桥问题的相关文章

过桥问题的Java解决

问题:在漆黑的夜里,四位旅行者来到了一座狭窄而且没有护栏的桥边.如果不借助手电筒的话,大家是无论如何也不敢过桥去的.不幸的是,四个人一共只带了一只手电筒,而桥窄得只够让两个人同时过.如果各自单独过桥的话,四人所需要的时间分别是1.2.5.10分钟:而如果两人同时过桥,所需要的时间就是走得比较慢的那个人单独行动时所需的时间.问题是,如何设计一个方案,让这四人尽快过桥. JAVA实现功能如下:(jdk1.3,jbuild7测试通过) public class mks { public mks() {

美元登陆香港"过桥"资本净流入涌动热钱正卷土重来

拿出超过200亿美金对冲热钱,香港金融监管局截至5月末的这个数据表明了一个重要事实:这是自2004年以来最大规模对冲来港热钱.而香港股市和房市双双齐涨,更使恒生地产分类指数自3月初以来上涨了54%. 这一趋势不得不令人怀疑:热钱是否继去年年中退潮后再次登陆内地?中国经济见底的讯号日益清晰,而出现在中国外汇资本帐户上的净流入趋势也越来越明显."我们估测自2009年一季度以后资本流出和流入的压力处于平衡状态."6月1日,巴克莱中国区研究主管彭文生敏锐地捕捉到这一讯息.通过长期监测外汇数据,

过桥问题的c语言编写和实现

问题描述 过桥问题的c语言编写和实现 怎么用c语言来编写过桥问题?最佳方案构造法:以下是构造N个人(N≥1)过桥最佳方案的方法: 1) 如果N=1.2,所有人直接过桥. 2) 如果N=3,由最快的人往返一次把其他两人送过河. 3) 如果N≥4,设A.B为走得最快和次快的旅行者,过桥所需时间分别为a.b:而Z.Y为走得最慢和次慢的旅行者,过桥所需时间分别为z.y.那么 当2b>a+y时,使用模式一将Z和Y移动过桥: 当2b<a+y时,使用模式二将Z和Y移动过桥: 当2b=a+y时,使用模式一将Z

妙融P2P借贷:解决个人及企业急用钱难题

老冯是做建筑生意的,随着楼市回暖,手里的工程一个接一个.这原本是好事儿,可前两天老冯却开始头疼了.原因是其中一个工程甲方暂时无法支付工程款,这直接导致老冯无法进料,工人的工资也发不出.老冯急需一笔钱帮他解决眼前的燃眉之急.过去,中小企业和个人解决"急用钱"的问题,通常只有两条路,找银行贷款当然是首选,但此路并不顺畅,于是,一些中小企业和个人只好铤而走险,去借"高利贷".而如今,他们多了一个选择,以"妙融投资"为代表的投资融资管理企业,正试图借助活

过桥贷,能成为翘起房价的隐藏杠杆吗?

当下,房地产行业正处于多事之秋.无论是频繁发布的政策,还是门道多多的经济策略,抑或浮躁且压抑的心态,都让其成为最热门的话题,就连在房地产行业混迹多年的老司机也难以掌控当下混杂的状况和未来的发展态势.这其中,关于房价是否上涨成为最为核心的关注焦点. 影响房价是否上涨有多个原因,除了地理位置.人口.城市繁华度等,贷款也是不可忽视的一面.自首付贷被叫停以后,过桥贷又向"幽灵"一样突然冒了出来,在房产买卖市场充当着重要的调节作用.过桥贷满足了买卖双方的刚需换房.炒房等需求,盘活着房地产行业.而

什么是死锁及死锁的必要条件和解决方法【转】

转自:http://blog.csdn.net/abigale1011/article/details/6450845/ 来自:http://blog.163.com/yanenshun@126/blog/static/128388169200982444858590/?fromdm&fromSearch&isFromSearchEngine=yes   进程死锁及解决办法 操作系统 2009-09-24 16:48:58 阅读767 评论1   字号:大中小 订阅  一.要点提示 (1)

解决win7系统无法将网页添加到收藏夹的方法

  许多用户在访问网站时,如果看到自己感兴趣的网页内容或网站,通常我们都会通过Ctrl+D添加到收藏夹中,但近期有部分win7系统用户,在浏览器下添加网页收藏时,却发现无法将网页添加到收藏夹,对于这一问题我们如何解决呢?下面看小编为大家提供的详细解决方法吧! 原因分析: 很多时候网址不能收藏都是由于收藏夹目录指向错误引起的,我们可以到注册表里将其修复. 操作方法: 1.在开始菜单中点击"运行",然后输入"regedit"并且回车; 2.打开注册表编辑器,依次展开[H

如何解决win7旗舰版系统下IE收藏夹无法展开的问题

近期朋友在电脑的操作过程中遇到这样一个问题,计算机中的收藏夹突然无法正常展开了,遇到这样的问题令人十分的懊恼.经过多番的研究及测试之后,总算找到了解决计算机中收藏夹无法展开问题的方法.下面就一起来分享看看如何解决win7旗舰版系统计算机中收藏夹无法展开问题吧! 操作方法: 1.使用快捷键win键+r键打开运行窗口,在运行窗口中输入"regedit"回车确认,打开注册表编辑器. 打开注册表编辑器 2.在打开的注册表编辑器中,依次展开到HKEY_CLASSES_ROOTlnkfile. 展

电脑中通过修改注册表解决网页无法添加到收藏夹的方法

  电脑中通过修改注册表解决网页无法添加到收藏夹的方法.最近有不少用户反映在电脑中出现了无法添加网页到收藏夹的问题,尝试了各种方法都无法解决这个问题.对此,在接下来的内容中,小编为大家提供了一种通过修改注册表解决网页无法添加到收藏夹的方法,大家可以参考一下. 1.按Win+R打开运行,输入regedit并按回车键; 2.在注册表编辑器依次展开HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Explorer/UserShell