标签:dian int 打酒 jiu 李白 ans include
标题:李白打酒
话说大诗人李白,一生好饮。幸好他从不开车。
一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:
无事街上走,提壶去打酒。
逢店加一倍,遇花喝一斗。
这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。
请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。
则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。
注意:通过浏览器提交答案。答案是个整数。不要书写任何多余的内容。
//思路1 排列所有可能
//思路2 递归搜索;
代码1可能是第一时间最容易想到的;
# include<iostream>
# include<algorithm>
# include<string>
using namespace std;
int ans=0;
int main()
{
string na="aaaaabbbbbbbbb";
do
{ int jiu=2;
string str=na;
for(int i=0;i<14;i++)
{
if(str[i]=='a')
jiu*=2;
else if(str[i]=='b')
{
jiu--;
}
}
if(jiu==1)
ans++;
}while(next_permutation(na.begin(),na.end()));
cout<<ans<<endl;
return 0;
代码2
# include<iostream>
using namespace std;
int ans=0;
void f(int jiu,int dian,int hua) //dfs的思想走所有的步,最后找到出口。
{
if(dian==5&&hua==9&&jiu==1)
{
ans++;
return ;
}
if(dian<5)f(jiu*2,dian+1,hua);
if(hua<9)f(jiu-1,dian,hua+1);
}
int main()
{
f(2,0,0);
cout<<ans<<endl;
}
递归的方法:
1.把复杂的问题分解为若干的简单的问题,即以后的每一步都在重复这几个问题。
2.找出口。
标签:dian,int,打酒,jiu,李白,ans,include
来源: https://blog.csdn.net/qq_42914633/article/details/88261205
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。