題目
話說大詩人李白,一生好飲。幸好他從不開車。
一天,他提著酒壺,從家裡出來,酒壺中有酒兩斗。他邊走邊唱:
無事街上走,提壺去打酒。
逢店加一倍,遇花喝一斗。
這一路上,他一共遇到店 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。則...