用个程序来算。。。。。脑袋不太好用了,花了老半天时间。。

来源: happybob 2015-10-27 21:51:57 [] [博客] [旧帖] [给我悄悄话] 本文已被阅读: 次 (3960 bytes)

1. 开始20元 10 瓶啤酒 结果:

10 -- 10
newBottle: 7,  newCaps: 7
totalBottles: 17,  leftBottles: 0, leftCaps: 9

7 -- 9
newBottle: 5,  newCaps: 5
totalBottles: 22,  leftBottles: 1, leftCaps: 6

5 -- 6
newBottle: 4,  newCaps: 4
totalBottles: 26,  leftBottles: 0, leftCaps: 6

4 -- 6
newBottle: 3,  newCaps: 3
totalBottles: 29,  leftBottles: 0, leftCaps: 5

3 -- 5
newBottle: 2,  newCaps: 2
totalBottles: 31,  leftBottles: 1, leftCaps: 3

2 -- 3
newBottle: 1,  newCaps: 1
totalBottles: 32,  leftBottles: 1, leftCaps: 4

1 -- 4
newBottle: 2,  newCaps: 2
totalBottles: 34,  leftBottles: 0, leftCaps: 2

2 -- 2
newBottle: 1,  newCaps: 1
totalBottles: 35,  leftBottles: 0, leftCaps: 3

1 -- 3
Total Bottles of beer: 35
left empty bottles: 1
left caps: 3

 

2.  开始10元  5 瓶啤酒 结果:

5 -- 5
newBottle: 3,  newCaps: 3
totalBottles: 8,  leftBottles: 1, leftCaps: 4

3 -- 4
newBottle: 3,  newCaps: 3
totalBottles: 11,  leftBottles: 0, leftCaps: 3

3 -- 3
newBottle: 1,  newCaps: 1
totalBottles: 12,  leftBottles: 1, leftCaps: 4

1 -- 4
newBottle: 2,  newCaps: 2
totalBottles: 14,  leftBottles: 0, leftCaps: 2

2 -- 2
newBottle: 1,  newCaps: 1
totalBottles: 15,  leftBottles: 0, leftCaps: 3

1 -- 3
Total Bottles of beer: 15
left empty bottles: 1
left caps: 3

 

==========================

Perl script:

 

# 6 =   19, 5 --- 15,  3 --- 7   2 -- 3, 10 -- 35
#
# 啤酒2块钱1瓶,4个盖换1瓶,2个空瓶换1瓶,10块可以喝几瓶?
#
#
#

$startBottlesOfBeer = 10;  

$totalBottles = $startBottlesOfBeer;
$leftBottles = 0;
$leftCaps = $startBottlesOfBeer;
$lastBottle = 0;

calc($totalBottles,$leftCaps);

print "Total Bottles of beer: $totalBottles\n";
print "left empty bottles: $lastBottle\n";
print "left caps: $leftCaps\n";

sub calc($bottle, $caps)
{
    $bottle = shift;
    $caps = shift;

    print "$bottle -- $caps\n";

    if ($bottle < 2 && $caps < 4)
    {
        return;
    }

    $lastBottle = 1;

    my $newBottle = int(($bottle + $leftBottles) / 2) + int ($leftCaps / 4);

    my $newCaps = $newBottle;

    print "newBottle: $newBottle,  newCaps: $newCaps\n";

    $totalBottles += $newBottle;
    $leftBottles = ($bottle + $leftBottles) % 2;

    $leftCaps = ($newCaps) + $leftCaps % 4;

    print "totalBottles: $totalBottles,  leftBottles: $leftBottles, leftCaps: $leftCaps\n\n";

    calc($newBottle , $leftCaps)

}

 

请您先登陆,再发跟帖!

发现Adblock插件

如要继续浏览
请支持本站 请务必在本站关闭/移除任何Adblock

关闭Adblock后 请点击

请参考如何关闭Adblock/Adblock plus

安装Adblock plus用户请点击浏览器图标
选择“Disable on www.wenxuecity.com”

安装Adblock用户请点击图标
选择“don't run on pages on this domain”