藍橋杯 李白飲酒及變體公升級(遞迴)

2021-10-08 19:45:38 字數 787 閱讀 1869

題目

話說大詩人李白,一生好飲。幸好他從不開車。

一天,他提著酒壺,從家裡出來,酒壺中有酒兩斗。他邊走邊唱:

無事街上走,提壺去打酒。

逢店加一倍,遇花喝一斗。

這一路上,他一共遇到店 5 次,遇到花 10 次,已知最後一次遇到的是花,他正好把酒喝光了。請你計算李白遇到店和花的次序,有多少種可能的方案。

解析這個問題用的是次數,可以遍歷每乙個可能。不能使用全排列將所有可能列出,太耗時。我們自己不用考慮酒店和花的次序,使用遞迴。

**

#includeusing namespace std;

int ans = 0;

void function(int dian,int hua,int jiu)

int main()

變形

題目只要求得次數,如果還要輸出每次符合條件的排列,如何求解?

很簡單,只要對上式稍稍變形,新增乙個陣列,將遇到的是店還是花記錄在陣列上,滿足最終條件即輸出並加一。

**:

#includeusing namespace std;

int ans = 0;

int arr[14];

void function(int dian,int hua,int jiu,int arr,int i)

if(hua>0)

if(dian == 0&&hua == 0&&jiu == 1)

printf("\n");

ans++;

} }int main()

藍橋杯 李白打酒

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

藍橋杯 李白打酒

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

藍橋杯 李白打酒

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