題目描述:
李白提著酒壺遊走在大街上,酒壺中有酒兩斗
他邊走邊唱道:
無事街上走,提壺去打酒
逢店加一倍,遇花喝一斗
這一路上他一共遇店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。則...