李白打酒(递归)

硅谷探秘者 2720 0 0

李白打酒

话说大诗人李白,一生好饮。幸好他从不开车。

一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:

无事街上走,提壶去打酒。
逢店加一倍,遇花喝一斗。

这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了

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

方案1:

package problem;
/**
 * 李白打酒
 * @author LENOVO
 */
public class LibaiWine {
	public static int count=0;
	//递归函数
	public static void dfs(int h,int d,int wine) {
		if(wine<0||h>9||d>5)//递归出口,酒>=0,花<=9,店<=5
			return;
		if(h==9&&d==5)//h==9的目的为保证最后一次遇见的是花
			if(wine==1)
				count++;
		dfs(h+1,d,wine-1);//遇花,继续搜索
		dfs(h,d+1,wine*2);//遇店,继续搜索
	}
	
	public static void main(String[] args) {
		dfs(0,0,2);//初始2斗酒
		System.out.println(count);
	}
}


方案2:正好和方案1相反

package problem;
/**
 * 李白打酒
 * @author LENOVO
 */
public class LibaiWine {
	
	public static int count=0;
	
	public static int dfs2(int d,int h,int wine){
		if(d>=1)
			dfs2(d-1,h,wine*2);
		if(h>=2)
			dfs2(d,h-1,wine-1);
		if(d==0 && h==1 && wine==1) //保证最后一次遇见的是 花 此时还剩下1斗酒 
			count++;
		return count;
	}
	
	public static void main(String[] args) {
		dfs2(5,10,2);//初始2斗酒
		System.out.println(count);
	}
	
}

答案是:14


评论区
请写下您的评论...
暂无评论...
猜你喜欢
数据结构与算法 5064 整理二叉树的遍历-(法)和(非法)-笔记先序遍历、中序遍历、后续遍历、层级遍历。1.节点信息:packagetree;publicclassNodeE{ privateEe;//数据域
数据结构与算法 4363 实现合并两增链表-合并后保持增序列java描述数据结构:单链表算法:链表节点packageclub.test;/****链表节点*@authorjiajia
数据结构与算法 1302 算法思想该算法使用法实现,思路为:每次将待排序数组在中间位置分成左右两组,分别对左右两个数组进行并排序,的条件是数组长度必须大于等于3,所以当数组中只有两个数据的时候可以直接进行比较排
数据结构与算法 4834 实现全排列算法c++描述#includeiostreamusingnamespacestd;//交换voidexchange(int*a,inti,intj){if(i==j){return
数据结构与算法 2279 链表节点packageclub.test;/****链表节点*@authorjiajia**/publicclassNode{ publicintvalue; publicNodenext; publicNode(intvalue,Nodenext){ super(); this.value=value; this.next=next; }}算法实现packageclub.test;/***
数据结构与算法 7761 反转链表有一个单向链表t如下:t=1-2-3-4-5-6-7-8-9写一个方法反转链表t如下:1-2-3-4-5-6-7-8-9=tjava代码:packagetest;/*** 节点类*/classNode{ publicintdata; publicNodenext; publicNode(intdata,Nodenext){ this.data=data; this.next=next;
数据结构与算法 3748 题目:在一个有序数组中查找指定的数,如果存在返回其数组下标,否则返回-1packagetest;/*** 二分查找*@author硅谷探秘者(jia)*/publicclassTestMain2{ staticinta[]={1,2,3,5,7,8,9,12,45,456,789,1234,45666,45648789}; staticintf=2; publicstaticvoidmain(St
框架 1397 maven包连同依赖的jar包一起包的插件plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-assembly-plugin
归档
2018-11  12 2018-12  33 2019-01  28 2019-02  28 2019-03  32 2019-04  27 2019-05  33 2019-06  6 2019-07  12 2019-08  12 2019-09  21 2019-10  8 2019-11  15 2019-12  25 2020-01  9 2020-02  5 2020-03  16 2020-04  4 2020-06  1 2020-07  7 2020-08  13 2020-09  9 2020-10  5 2020-12  3 2021-01  1 2021-02  5 2021-03  7 2021-04  4 2021-05  4 2021-06  1 2021-07  7 2021-08  2 2021-09  8 2021-10  9 2021-11  16 2021-12  14 2022-01  7 2022-05  1 2022-08  3 2022-09  2 2022-10  2 2022-12  5 2023-01  3 2023-02  1 2023-03  4 2023-04  2 2023-06  3 2023-07  4 2023-08  1 2023-10  1 2024-02  1 2024-03  1 2024-04  1
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议 keepalived minio mysql ensp 网络基础 xxl-job rabbitmq haproxy srs 音视频 webrtc javascript
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。