4個經典算法問題的shell表示

1、猴子第一天摘了若干個桃子,當天吃了一半,還不過癮,又多吃了一個;第二天早上又吃掉了剩下的一半,又多吃了一個。以後每一天都吃了前一天剩下的一半又多吃一個。到第十天的早上想再吃的時候,發現只剩下一個桃子了。問:這隻猴子第一天共摘了多少個桃子?

#!/bin/bash
#共有sum個
#最後一天 1 個
#第9天(1+1)*2
#第一天的桃子數是第2天桃子數加1後的2倍
#sum=(sum+1)*2
sum=1
for i in 1 2 3 4 5 6 7 8 9
   do
         sum=$(expr $(expr $sum + 1) \* 2)
         echo $sum
 done

執行的結果

wKiom1d31TTzTjjfAAA0ixBJvEk934.jpg-wh_50

2、求水仙花數

編程:在網頁上顯示出所有水仙花數。解釋:水仙花數:是指一個三位數,其各位數字的立方和等於該數本身。如:153就是一個水仙花數,因爲1的立方+5的立方+3的立方=153。

#!/bin/bash
#水仙花數範圍:100<=x=<999
#a=x/100,b=(x-a*100)/10,c=(x-a*100-b*10)
#a*a*a+b*b*b+c*c*c=x
x=100
for ((x=100; x<1000; x++)) do
         a=$(expr $x / 100)
         b=$(expr $(expr $x - $a \* 100) / 10)
         c=$(expr $x - $a \* 100 - $b \* 10)
        if [ $(expr $a \* $a \* $a + $b \* $b \* $b + $c \* $c \* $c) = $x ];then
                echo $x 
                 
         fi
done

wKiom1d32GejPQOwAAAroeVBCfc341.jpg-wh_50

3、雞兔同籠

這是《孫子算經》中的一個著名的趣題,大家試求出結果。題目如下:一隻籠子裏有好多雞和兔子,看頭數有35只頭,看腿有94只腿,問各有雞和兔多少隻?

#!/bin/bash
#x+y=35
#2x+4(35-x)=94
for x in $(seq 35)
do
    y=$(expr 35 - $x)
     if [ $(expr $x \* 2 + $y \* 4) = 94 ];then
         echo 雞${x}只 兔子${y}只
    fi
done

wKioL1d32I_D7sB_AAAiSKFz1Sw302.jpg

4、一元錢

把一元錢換成一分,二分,五分硬幣(每種至少用一枚),問有多少種換法?並且把每種換法輸出

#!/bin/bash
#x>=1,x<=93
#y>=1,y<=47
#z>=1,z<=19
#x+2y+5z=100
for ((x=1; x<94; x++)) do
         for((y=1; y<48; y++)) do
                for((z=1; z<20; z++)) do
                        if [ $(expr $x + $y \* 2 + $z \* 5) = 100 ];then
                                 echo $x $y $z
                         fi
                 done
         done
done

這個題目總共有461種方法,太多就不貼圖了,重定向執行結果到文本吧,

The End






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章