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++
- DPLL 演算法(求解k-SAT問題)詳解(C++實現)演算法C++
- python+gurobi求解排班問題Python
- NP難問題求解綜述
- 樹遞迴問題的求解遞迴
- 遞迴求解漢諾塔問題遞迴
- matlab求解線性規劃問題Matlab
- 一個“一筆畫”問題的求解器
- Python求解錯,不知道哪裡有問題。。。Python
- 求解救:使用 docker 啟動 jenkins 遇到的問題。DockerJenkins
- 遺傳演算法求解TSP問題(python版)演算法Python
- 使用合適的維度拆分來求解問題
- 分治演算法-求解棋盤覆蓋問題演算法
- [提問交流]OneThink學習日記(更有很多問題求解答!)
- 班級問題(c++)C++
- c++ 常見問題C++
- C++的0.3問題C++
- 動態規劃求解最長上升子序列問題動態規劃
- 求解決 Laravel with () limit 的問題 附帶解決方案LaravelMIT
- 非線性最小二乘問題的求解方法
- 用蠻力法(窮舉法)求解冪集問題
- 利用瓊斯矩陣求解一般偏振問題矩陣
- 利用遺傳學演算法求解工作分配問題演算法
- 【組合數學】遞推方程 ( 有重根遞推方程求解問題 | 問題提出 )
- 102、天末懷李白
- c++使用遇到的問題C++
- 程式設計題求解程式設計
- 最大連續子陣列和求解問題(C語言)陣列C語言
- 用 Httprunner3 做介面測試遇到了問題,求解~HTTP
- 南沙信C++陳老師解一本通題: 1101:不定方程求解C++
- c++工程師面試問題C++工程師面試
- c++偶現問題備錄C++
- 在用迅為的4418開發板Flash空間問題求解
- 基於免疫演算法的TSP問題求解matlab模擬演算法Matlab
- ch2_8_3求解迴文序列問題(遞迴實現)遞迴