李白打酒-第五届蓝桥杯c/c++B组
2018-03-25 08:56
246 查看
标题:李白打酒
话说大诗人李白,一生好饮。幸好他从不开车。
一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:
无事街上走,提壶去打酒。
逢店加一倍,遇花喝一斗。
这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。
请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。
注意:通过浏览器提交答案。答案是个整数。不要书写任何多余的内容。
题解:我用了两种方法,一种递归,一种直接暴力枚举。
代码:///递归;
#include<stdio.h>
int sum=0;
void dfs(int hua,int d,int j)
{
if(hua==9&&d==5&&j==1)
{
sum++;
return ;
}
if(j<=0)return ;
if(hua>9||d>5)return ;
dfs(hua+1,d,j-1);
dfs(hua,d+1,j*2);
}
int main()
{
dfs(0,0,2);
printf("%d\n",sum);
}
话说大诗人李白,一生好饮。幸好他从不开车。
一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:
无事街上走,提壶去打酒。
逢店加一倍,遇花喝一斗。
这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。
请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。
注意:通过浏览器提交答案。答案是个整数。不要书写任何多余的内容。
题解:我用了两种方法,一种递归,一种直接暴力枚举。
代码:///递归;
#include<stdio.h>
int sum=0;
void dfs(int hua,int d,int j)
{
if(hua==9&&d==5&&j==1)
{
sum++;
return ;
}
if(j<=0)return ;
if(hua>9||d>5)return ;
dfs(hua+1,d,j-1);
dfs(hua,d+1,j*2);
}
int main()
{
dfs(0,0,2);
printf("%d\n",sum);
}
///暴力枚举; #include<stdio.h> #include<string.h> int main() { int i,j,k,l,g,h,num,sum=0; int lu[14]={0}; for(i=0;i<10;i++) for(j=i+1;j<11;j++) for(k=j+1;k<12;k++) for(l=k+1;l<13;l++) for(g=l+1;g<14;g++) { memset(lu,0,sizeof(lu)); num=2; lu[i]=lu[j]=lu[k]=lu[l]=lu[g]=1; for(h=0;h<14;h++) { if(lu[h]==1)num=num*2; else num=num-1; } if(num==1) sum++; } printf("%d\n",sum); }
相关文章推荐
- 2014年第五届蓝桥杯试题C/C++程序设计B组——李白打酒
- 第五届蓝桥杯C++B组 李白打酒
- 2014第五届蓝桥杯预赛试题本科c++李白打酒
- 第五届蓝桥杯决赛C\C++B组——出栈次序
- 第五届蓝桥杯 软件类省赛真题 第六题:李白打酒
- 蓝桥杯第五届省赛C/C++A组第五题 锦标赛
- 2014 蓝桥杯 预赛 c/c++ 本科B组 第三题:李白打酒 (8' )
- 2014第五届蓝桥杯C++B组第三题:李白打酒
- 第五届蓝桥杯C++B组 小朋友排队
- 2014年第五届蓝桥杯C/C++ B组决赛真题题解
- 2014 蓝桥杯 预赛 c/c++ 本科B组 第三题:李白打酒 (8' )
- 山东省第五届蓝桥杯 ///标题:李白打酒//c/c++组
- 第五届蓝桥杯C/C++本科B组(真题试做)(1~5)
- 2014 蓝桥杯 预赛 c/c++ 本科B组 第三题:李白打酒 (8' )
- 切面条-第五届蓝桥杯c/c++B组
- 【蓝桥杯题目分析】2014年第五届——第三题:李白打酒
- 2014年第五届蓝桥杯省赛C++B组——1、啤酒和饮料
- 第五届蓝桥杯A组java—李白打酒
- 山东省第五届蓝桥杯 ///标题:切面条//c/c++组
- 2014 第五届蓝桥杯预赛c/c++本科B组 解题报告