【蓝桥杯】李白打酒
參考博客:http://www.cnblogs.com/zhezh/p/3773468.html
話說大詩人李白,一生好飲。幸好他從不開車。
? ? 一天,他提著酒壺,從家里出來,酒壺中有酒2斗。他邊走邊唱:
? ? 無事街上走,提壺去打酒。
? ? 逢店加一倍,遇花喝一斗。
? ? 這一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。?
? ? 請你計算李白遇到店和花的次序,可以把遇店記為a,遇花記為b。則:babaabbabbabbbb 就是合理的次序。像這樣的答案一共有多少呢?請你計算出所有可能方案的個數(shù)(包含題目給出的)。
? ? 注意:通過瀏覽器提交答案。答案是個整數(shù)。不要書寫任何多余的內(nèi)容。
思路:可以通過遞歸來進行模擬李白遇到店wine加倍和遇到花wine減一的情況,只是需要注意最后一次必須是遇到花。
代碼:
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<string>using namespace std; int sum=0; void libai(int i, int hotel, int flower, int wine){if(hotel>5 || flower>10) return;if(hotel==5 && flower == 9 && i==14 && wine==1){//這里限制了最后一次必須為花sum++;return;}libai(i+1, hotel+1, flower, wine*2);//hotel wine*2libai(i+1, hotel, flower+1, wine-1);//flower win-1}int main(){libai(0, 0, 0, 2);printf("%d\n",sum);return 0; }總結(jié)
- 上一篇: 欢迎广大技术爱好者参与JEECG开源项目
- 下一篇: 架构设计 | 基于电商交易流程,图解TC