2014年蓝桥杯C/C++大学B组省赛真题(李白打酒)

题目描述:

题目描述
话说大诗人李白,一生好饮。幸好他从不开车。
一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:
无事街上走,提壶去打酒。
逢店加一倍,遇花喝一斗。
这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。

请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。
 

代码:

#include<iostream>
using namespace std;
int res;
void dfs(int count,int n1,int n2){
	//除去最后一次遇到花店,如果总共遇到了5次酒店,9次花店,而且最后还剩1斗酒,则答案加1,并返回 
	if(count==1&&n1==5&&n2==9){
		res++;
		return ;
	}
	//如果越界则返回 
	if(n1>5||n2>9)return ;
	//遇到酒店 
	dfs(count*2,n1+1,n2);
	//遇到花 
	dfs(count-1,n1,n2+1);
}
int main(){
	dfs(2,0,0);
	cout<<res<<endl;
	return 0;
}

posted @   回忆、少年  阅读(21)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示