藍橋杯 李白打酒

2021-10-19 07:31:15 字數 1851 閱讀 2379

題目描述:

李白提著酒壺遊走在大街上,酒壺中有酒兩斗

他邊走邊唱道:

無事街上走,提壺去打酒

逢店加一倍,遇花喝一斗

這一路上他一共遇店5次,遇到花10次,已知最後一次遇到的是花,他正好把酒喝完了

請你計算李白遇到店和花的次序,可把遇到店記為a,遇到花記為b,請輸出所有的答案並計算答案的個數。

思路描述:

李白酒壺中兩斗酒,第一次遇到了店門,那就加一倍,然後遇到花,喝了一斗。。。

李白酒壺中兩斗酒,第一次遇到了花,喝了一斗,然後遇到了店門,加了一倍。。。

當然還有許許多多的情況,但李白第一次遇到的,非店即花,於是我們腦海中有了下面這種想法

可以比較明顯地看出,我們把李白遇到的情況列出後,是一顆二叉樹,而二叉樹的遍歷,我們可以用遞迴的方式進行。

當然在進行遞迴的時候我們要注意終止條件的判斷,這題的判斷是:

李白的酒沒了

所有的花和店都遇到了

酒沒了但還沒全部遇到

那麼一遍完整的流程下來,就是李白在遇到所有店和花之後酒剛好喝完,這種情況我們記錄sum+1

**如下:

/**

* author: 17881

* date: 2021/2/5 13:14

* filename: test04

* description: 李白喝酒

*/public

class

test04

public

static

void

fun(

int wine,

int n,

int d,

int h)

if(wine ==0)

} c[n-1]

='a'

;fun

(wine*

2,n+

1,d+

1,h)

; c[n-1]

='b'

;fun

(wine-

1,n+

1,d,h+1);}}

這就是前序遍歷啊啊啊啊啊!!!the answer:

sum==

1ababbbbbabababbb

sum==

2abbabbabbbababbb

sum==

3abbabbbaabbbabbb

sum==

4abbabbbabaabbbbb

sum==

5abbbaabbabbbabbb

sum==

6abbbaabbbaabbbbb

sum==

7abbbabaabbabbbbb

sum==

8baababbbbbababbb

sum==

9baabbabbabbbabbb

sum==

10baabbabbbaabbbbb

sum==

11baabbbaabbabbbbb

sum==

12babaababbbbbabbb

sum==

13babaabbabbabbbbb

sum==

14bababaababbbbbbb

process finished with exit code 0

藍橋杯 李白打酒

話說大詩人李白,一生好飲。幸好他從不開車。一天,他提著酒壺,從家裡出來,酒壺中有酒2鬥。他邊走邊唱 無事街上走,提壺去打酒。逢店加一倍,遇花喝一斗。這一路上,他一共遇到店5次,遇到花10次,已知最後一次遇到的是花,他正好把酒喝光了。請你計算李白遇到店和花的次序,可以把遇店記為a,遇花記為b。則 ba...

藍橋杯 李白打酒

話說大詩人李白,一生好飲。幸好他從不開車。一天,他提著酒壺,從家裡出來,酒壺中有酒2鬥。他邊走邊唱 無事街上走,提壺去打酒。逢店加一倍,遇花喝一斗。這一路上,他一共遇到店5次,遇到花10次,已知最後一次遇到的是花,他正好把酒喝光了。請你計算李白遇到店和花的次序,可以把遇店記為a,遇花記為b。則 ba...

藍橋杯 李白打酒

題目 話說大詩人李白,一生好飲。幸好他從不開車。一天,他提著酒壺,從家裡出來,酒壺中有酒2鬥。他邊走邊唱 無事街上走,提壺去打酒。逢店加一倍,遇花喝一斗。這一路上,他一共遇到店5次,遇到花10次,已知最後一次遇到的是花,他正好把酒喝光了。請你計算李白遇到店和花的次序,可以把遇店記為a,遇花記為b。則...