博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法题之计算哪一桶是红酒
阅读量:6836 次
发布时间:2019-06-26

本文共 1847 字,大约阅读时间需要 6 分钟。

算法原题

莫斯科的一位酒商现有六桶酒,容量分别为30升、32升、36升、38升、40升、62升。白酒五桶,红酒一桶。他的酒都是整桶出售,上午卖出了两桶白酒,下午卖出的白酒是上午的两倍。请问:红酒是哪一桶?

算法思路

由于总共有六桶酒,其中白酒五桶,红酒一桶;那么也就是说,下午卖出的N桶白酒的升数是早上卖出的两桶白酒升数的两倍,由于没说明下午卖出了多少桶,所以N是不确定的,也就是N的范围是1-3;但是,从六桶酒可以知道,升数最小的是30升和32升,这两个数的和为62升,那么下午至少卖出124升,即N桶的升数不能小于124,再看看其他桶的升数,所以N只能是3;也就是最终知道,早上卖出两桶白酒,下午卖出三桶白酒,并且早上两桶白酒的升数的两倍等于下午卖出的三桶白酒的升数,然后剩下的一桶就是红酒了。

算法源码

// 六桶酒的升数数组$arr = [30, 32, 36, 38, 40, 62];$len = count($arr);// 随机取两桶假设为白酒for ($i = 0; $i < $len-1; $i++) {    for ($j = 1 + $i; $j < $len; $j++) {        $twoArr = $arr;        // 去掉早上卖出的两桶白酒        unset($twoArr[$i]);        unset($twoArr[$j]);        $twoArr = array_values($twoArr);        // 从剩下的取出三桶假设为白酒        for ($n = 0; $n < $len - 4; $n++) {            for ($m = 1 + $n; $m < $len - 3; $m++) {                for ($p = 1 + $m; $p < $len - 2; $p++) {                    // 早上白酒总和                    $oneSum = $arr[$i] + $arr[$j];                    // 下午白酒总和                    $twoSum = $twoArr[$n] + $twoArr[$m] + $twoArr[$p];                    // 如果早上卖出白酒的升数的两倍等于下午卖出白酒的升数,那么即符合所求                    if ($oneSum * 2 == $twoSum) {                        echo '早上卖出的白酒是:' . $arr[$i] . '、'. $arr[$j] . '
'; echo '下午卖出的白酒是:' . $twoArr[$n] . '、'. $twoArr[$m] . '、'. $twoArr[$p] . '
'; echo '所有五桶白酒是:' . $arr[$i] . '、'. $arr[$j] . '、'. $twoArr[$n] . '、'. $twoArr[$m] . '、'. $twoArr[$p] . '
'; $tmpArr = $twoArr; // 去掉下午卖出的三桶白酒 unset($tmpArr[$n]); unset($tmpArr[$m]); unset($tmpArr[$p]); // 剩下的一桶就是所求红酒 echo '一桶红酒是:' . current($tmpArr) . '

'; } } } } }}复制代码

最后

这只我的一种思路和实现方法,算法也不是很优,其他的实现算法还有很多,欢迎大家评论留言,实现语言和方式不限,谢谢。

转载地址:http://zrqkl.baihongyu.com/

你可能感兴趣的文章
wince 6.0 串口 读取 readfile 超时问题
查看>>
代码片段
查看>>
单例模式
查看>>
awk用法(三)
查看>>
谷歌深度学习公开课任务 5: Word2Vec&CBOW
查看>>
让Python不在mac的dock上显示火箭图标
查看>>
Oracle 数据库EM访问多个Instance
查看>>
理解 Delphi 的类(十) - 深入方法[28] - 递归函数实例: 搜索当前目录下的所有嵌套目录...
查看>>
前端纪实
查看>>
学 Win32 汇编[12]: PTR、OFFSET、ADDR、THIS
查看>>
WinAPI: GetLocalTime、SetLocalTime、SetSystemTime - 获取与设置系统时间
查看>>
关于 Delphi 中流的使用(6) 用流读写结构化文件
查看>>
复杂的结构化存取(一)
查看>>
web前端性能优化
查看>>
如何通过jq和php实现返回父级页面(附带记忆功能)
查看>>
Centos下运行gpg --gen-key生成key时出现卡住解决方案笔记
查看>>
Java时间操作工具类
查看>>
网页简单配置捉取网购信息
查看>>
Go语言int类型绑定方法
查看>>
awk深入应用
查看>>