c++求解李白喝酒問題
1.問題的重述
話說大詩人李白,一生好飲。幸好他從不開車。
一天,他提著酒壺,從家裡出來,酒壺中有酒2鬥。他邊走邊唱:
無事街上走,提壺去打酒。
逢店加一倍,遇花喝一斗。
這一路上,他一共遇到店5次,遇到花10次,已知最後一次遇到的是花,他正好把酒喝光了。
請你計算李白遇到店和花的次序,可以把遇店記為a,遇花記為b。則:babaabbabbabbbb 就是合理的次序。
像這樣的答案一共有多少呢?請你計算出所有可能方案的個數(包含題目給出的)。
2.問題的分析
根據問題一的重述可知當遇到店時,酒就加一倍,即 alcho=alcho*2 ,遇到花店就減一,即 alcho=alcho-1;while(store==0&&flower==0&&alcho==0)時並且最後一次為flower時即可;
所以我們通過條件判斷即可最後的次數是多少次了。
3.思路
運用遞迴來實現。
原始碼如下:
#include "stdafx.h"
#include <cstdio>
#include<iostream>
using namespace std;
int total = 0;
//李白打酒
void fun(int store, int flower, int alcho)
{
if (store>5 || flower>10)
{
return;
}
if ((store<5 && alcho <= 0) || (flower<10 && alcho <= 0))
{
return;
}
if (store == 5 && flower == 10 && alcho == 0)
{
total++;
}
fun(store + 1, flower, alcho * 2);
fun(store, flower + 1, alcho - 1);
}
int main()
{
fun(0, 0, 2);
cout << total << endl;
return 0;
}
最後的結果為:14
如下圖:
相關文章
- 回溯法解決喝酒問題 (轉)
- c++求解獎券題目C++
- 用c++設計哲學家進餐問題的求解C++
- 求解c++C++
- 演算法問題基於蟻群演算法求解求解TSP問題(JAVA)演算法Java
- DPLL 演算法(求解k-SAT問題)詳解(C++實現)演算法C++
- 樹遞迴問題的求解遞迴
- 求解spring aop cglib問題SpringCGLib
- CMP DataSource問題,尋求解決方案
- python+gurobi求解排班問題Python
- matlab求解線性規劃問題Matlab
- 分治演算法-求解棋盤覆蓋問題演算法
- 配置ASM磁碟時發現的奇怪問題,求解~ASM
- 使用合適的維度拆分來求解問題
- 利用瓊斯矩陣求解一般偏振問題矩陣
- 求解救:使用 docker 啟動 jenkins 遇到的問題。DockerJenkins
- 利用遺傳學演算法求解工作分配問題演算法
- 求解決 Laravel with () limit 的問題 附帶解決方案LaravelMIT
- 動態規劃求解最長上升子序列問題動態規劃
- 遺傳演算法求解TSP問題(python版)演算法Python
- Python求解錯,不知道哪裡有問題。。。Python
- [提問交流]OneThink學習日記(更有很多問題求解答!)
- 程式設計題求解程式設計
- 另一個數獨求解c++程式C++
- 又一個數獨求解c++程式C++
- 班級問題(c++)C++
- C++指標問題C++指標
- c++ try catch 問題C++
- C++的0.3問題C++
- c++ 常見問題C++
- 用 Httprunner3 做介面測試遇到了問題,求解~HTTP
- 最大連續子陣列和求解問題(C語言)陣列C語言
- c++使用遇到的問題C++
- c++中的特化問題C++
- 102、天末懷李白
- 王者榮耀李白該怎麼出裝?王者榮耀李白出裝及順序解析
- c++工程師面試問題C++工程師面試
- 大數乘法問題(C++版)C++