- 浏览: 467280 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
ty1972873004:
sunwang810812 写道我运行了这个例子,怎么结果是这 ...
Java并发编程: 使用Semaphore限制资源并发访问的线程数 -
lgh1992314:
simpleDean 写道请问,Logger.setLevel ...
Java内置Logger详解 -
sunwang810812:
我运行了这个例子,怎么结果是这样的:2号车泊车6号车泊车5号车 ...
Java并发编程: 使用Semaphore限制资源并发访问的线程数 -
jp260715007:
nanjiwubing123 写道参考你的用法,用如下方式实现 ...
面试题--三个线程循环打印ABC10次的几种解决方法 -
cb_0312:
SurnameDictionary文章我没看完,现在懂了
中文排序
本篇文章主要用来简单模仿走楼梯或者台阶,列出走完楼梯或者台阶所有的走法。
第一个程序:给定台阶数,每次走1步,2步或者3步。
第二个程序:给定台阶数据,每次走的最小台阶数,每次走的最大台阶数以及设定最多能走几次。采用Stack来实现。
第一个程序和运行结果如下:
/** * 程序主要用来简单模仿走楼梯(台阶). 给定台阶数,每次走1步, 2步 或者 3步, 列出走完台阶所有的走法. * * 例如3级台阶就有四种走法: * 1 1 1 * 1 2 * 2 1 * 3 * * @author Eric * @version 1.0 * */ public class Stairs { // 统计个数 private int currentCount = 1; /** * @param remainingSteps * : 剩余的台阶数,开始调用的值是总的台阶数 * @param currentSteps * : 递归过程中某种情况下,已经走的步骤,如 1 2 走了三步的情况 */ public void walkStairs(int remainingSteps, String currentSteps) { /* * 当剩下小于等于三级台阶时,输出楼梯的走法 */ if (remainingSteps <= 3) { printWalkWays(remainingSteps, currentSteps); } else { for (int step = 1; step <= 3; step++) { walkStairs(remainingSteps - step, currentSteps + " " + step); } } } private StringBuilder getCurrentCountStepInformation(String currentSteps) { return new StringBuilder().append("第").append(currentCount++).append( "种走法").append(currentSteps); } /** * 输出满足条件的台阶走法 * * @param remainingSteps * @param currentSteps */ private void printWalkWays(int remainingSteps, String currentSteps) { if (1 == remainingSteps) { System.out.println(getCurrentCountStepInformation(currentSteps) .append(" 1").toString()); } else if (2 == remainingSteps) { System.out.println(getCurrentCountStepInformation(currentSteps) .append(" 1 1").toString()); System.out.println(getCurrentCountStepInformation(currentSteps) .append(" 2").toString()); } else if (3 == remainingSteps) { System.out.println(getCurrentCountStepInformation(currentSteps) .append(" 1 1 1").toString()); System.out.println(getCurrentCountStepInformation(currentSteps) .append(" 1 2").toString()); System.out.println(getCurrentCountStepInformation(currentSteps) .append(" 2 1").toString()); System.out.println(getCurrentCountStepInformation(currentSteps) .append(" 3").toString()); } else { /** * 0 ==remainingSteps, 表明已经走完台阶了,直接输出就可以了 */ System.out.println(getCurrentCountStepInformation(currentSteps) .toString()); } } public static void main(String args[]) { Stairs s = new Stairs(); // 调用方法前需要先判断STEPS是否是大于0的。 s.walkStairs(5, ""); } }
如走5阶台阶有如下几种走法:
第1种走法 1 1 1 1 1
第2种走法 1 1 1 2
第3种走法 1 1 2 1
第4种走法 1 1 3
第5种走法 1 2 1 1
第6种走法 1 2 2
第7种走法 1 3 1
第8种走法 2 1 1 1
第9种走法 2 1 2
第10种走法 2 2 1
第11种走法 2 3
第12种走法 3 1 1
第13种走法 3 2
第二个程序和运行结果如下:
/** * 题目:走楼梯 * 给定台阶数目 -- SUM, * 每次最大的台阶数 -- MAX * 每次最小的台阶数 -- MIN * 期望值(最多在几步之内完成) -- EXPECT * * 思路: * 采用递归的方法实现。采用Stack结构来存储。 * */ import java.util.Stack; /** * 题目:走楼梯 * 给定台阶数目 -- SUM, * 每次最大的台阶数 -- MAX * 每次最小的台阶数 -- MIN * 期望值(最多在几步之内完成) -- EXPECT * * 思路: * 采用递归的方法实现。采用Stack结构来存储。 * * @author Eric * @version 1.0 * */ public class Stair2 { private Stack<Integer> stack = new Stack<Integer>(); private int currentCount = 0; /** * @param min * @param max * @param current * @param expect * @param sum */ private void getWalkWays(int min, int max, int current, int expect, int sum) { //当Stack中的数据和与总的台阶数一样时,输出结果 if (sum == current) { //输出满足条件的内容,其中,期望值(最多在几步之内完成) if ( expect >= stack.size()) { print(stack); } } //循环最小值到最大值 for (int currentIndex = min; currentIndex <= max; currentIndex++) { /* * 如果当前Stack中的值的和(current)加上当前循环的值(currentIndex) * 小于等于总的台阶数,那么就先把当前循环的值压入到Stack中, * 当前Stack中所有数据值的和加上当选循环的值 * 递归调用getWalkWays方法 * 然后,将stack的pop值去掉并修改Stack中当前所有元素的和 */ if (current + currentIndex <= sum) { stack.push(currentIndex); current += currentIndex; getWalkWays(min, max, current, expect, sum); current -= stack.pop(); } } } /** * 得到输出的前缀。 * 如: * 第50中走法 * @return */ private String getCountInformation() { return new StringBuilder().append("第").append(++currentCount).append( "中走法:").toString(); } /** * 打印当前Stack中的元素 * 如: * 第50中走法:4 4 2 * * @param stack */ private void print(Stack stack) { // 添加满足条件集合的元素个数范围 StringBuilder sb = new StringBuilder(); sb.append(getCountInformation()); for (Object o : stack) { sb.append(o).append(" "); } System.out.println(sb.deleteCharAt(sb.length() - 1).toString()); } /** * 输出符合条件的走楼梯条件信息。 * */ private void printResultTips(int min, int max, int sum, int expectTimes) { System.out.println(new StringBuilder().append("条件==》").append("台阶数为").append(sum) .append(", 每步走的最小台阶数为").append(min).append(", 每步走的最大台阶数为") .append(max).append(",最多走的次数是").append(expectTimes).toString()); } /** * 测试方法 * */ public void test() { int min = 2; int max = 4; int expectTimes = 4; int totalSteps = 10; printResultTips(min, max, totalSteps, expectTimes); getWalkWays(min, max, 0,expectTimes,totalSteps); } public static void main(String[] args) { //测试 new Stair2().test(); } }
条件==》台阶数为10, 每步走的最小台阶数为2, 每步走的最大台阶数为4,最多走的次数是4
第1中走法:2 2 2 4
第2中走法:2 2 3 3
第3中走法:2 2 4 2
第4中走法:2 3 2 3
第5中走法:2 3 3 2
第6中走法:2 4 2 2
第7中走法:2 4 4
第8中走法:3 2 2 3
第9中走法:3 2 3 2
第10中走法:3 3 2 2
第11中走法:3 3 4
第12中走法:3 4 3
第13中走法:4 2 2 2
第14中走法:4 2 4
第15中走法:4 3 3
第16中走法:4 4 2
发表评论
-
工厂类中移除if/else语句
2016-07-10 19:52 910面向对象语言的一个强大的特性是多态,它可以用来在代码中移除 ... -
Java编程练手100题
2014-12-11 17:13 6735本文给出100道Java编程练手的程序。 列表如下: 面 ... -
数组复制的三种方法
2014-11-30 12:57 2223本文将给出三种实现数组复制的方法 (以复制整数数组为例)。 ... -
数组复制的三种方法
2014-11-30 12:54 0本文将给出三种实现数组复制的方法 (以复制整数数组为例)。 ... -
四种复制文件的方法
2014-11-29 13:21 1745尽管Java提供了一个类ava.io.File用于文件的操 ... -
判断一个字符串中的字符是否都只出现一次
2014-11-25 12:58 2733本篇博文将给大家带来几个判断一个字符串中的字符是否都只出现一 ... -
使用正则表达式判断一个数是否为素数
2014-11-23 13:35 2175正则表达式能够用于判断一个数是否为素数,这个以前完全没有想过 ... -
几个可以用英文单词表达的正则表达式
2014-11-21 13:12 3758本文,我们将来看一下几个可以用英文单词表达的正则表达式。这些 ... -
(广度优先搜索)打印所有可能的括号组合
2014-11-20 11:58 1961问题:给定一个正整n,作为括号的对数,输出所有括号可能 ... -
随机产生由特殊字符,大小写字母以及数字组成的字符串,且每种字符都至少出现一次
2014-11-19 14:48 3984题目:随机产生字符串,字符串中的字符只能由特殊字符 (! ... -
找出1到n缺失的一个数
2014-11-18 12:57 3185题目:Problem description: You h ... -
EnumSet的几个例子
2014-11-14 16:24 8758EnumSet 是一个与枚举类型一起使用的专用 Set 实现 ... -
给定两个有序数组和一个指定的sum值,从两个数组中各找一个数使得这两个数的和与指定的sum值相差最小
2014-11-12 11:24 3334题目:给定两个有序数组和一个指定的sum值,从两个数组 ... -
Java面试编程题练手
2014-11-04 22:49 6706面试编程 写一个程序,去除有序数组中的重复数字 编 ... -
Collections用法整理
2014-10-22 20:55 9851Collections (java.util.Collect ... -
The Code Sample 代码实例 个人博客开通
2014-09-04 18:48 1423个人博客小站开通 http://thecodesample. ... -
Collections.emptyXXX方法
2014-06-08 13:37 2148从JDK 1.5开始, Collections集合工具类中预先 ... -
这代码怎么就打印出"hello world"了呢?
2014-06-08 00:37 7401for (long l = 4946144450195624L ... -
最短时间过桥
2014-04-21 22:03 4159本文用代码实现最短时间过桥,并且打印如下两个例子的最小过桥时间 ... -
将数组分割成差值最小的子集
2014-04-20 22:34 2907本文使用位掩码实现一个功能 ==》将数组分割成差值最小的子集 ...
相关推荐
【极简楼梯台阶式计划总结PPT模板】是一种设计简洁、结构清晰的演示文稿工具,主要用于呈现工作或项目的总结、进度以及未来规划。在IT行业中,这种模板可以帮助专业人士高效地整理和展示他们的工作成果、挑战、解决...
4. **材料与性能**:列出使用的材料及其特性,如耐用性、轻便性,以及任何特殊的防护措施,以确保设备和人员的安全。 5. **适用场景**:列举出这款装置在电信行业中可能应用的具体场景,如住宅区、商业楼宇、基站等...
由于这是一个穷举法解决问题的例子,输出将列出所有符合条件的球员位置分配情况。 #### 3. 下楼梯问题 本问题要求计算从顶部到底部的不同走法数量,每次可以跳1、2或3个台阶。 **代码解析:** ```c #include #...
20. **动态走法**:根据上楼梯的走法归纳出规律,找出有四个台阶时的走法数量。 解答题部分包括计算、解方程、错误分析、等差数列的规律、角度的计算以及几何体的性质等,这些都是初中数学的重要知识点。 通过这些...
2. 定额项目中龙骨和面层分开列出,使用时应根据设计选择相应子目。 3. 面层装饰中,预制板的抹灰、粘贴面层已包括勾缝,不再另计。 4. 吊顶的其他项目,如金属格栅吸声板,按组装形式分项,可调整吸声体支架间距。 ...
6. **楼梯问题**:小明从1楼到3楼走了36级台阶,可以推断每层楼有18级台阶,那么从1楼到6楼需要走90级台阶。 7. **军事队列问题**:15个军人站成一列,每两人间距离1米,队伍总长是14米(不包括起始位置,所以是15 ...
6. 材料和做法未列出:对于护窗栏杆、楼梯踏步防滑条和美术字等,若未明确说明,通常意味着不考虑在内。 7. 轻质砖隔墙:若无合适子目,可以考虑用其他材料替代,如全塑钢板。 8. 楼梯踏步侧面做法:如果未标注,...
从1楼到3楼走了2层楼梯,每层36级,所以从1楼到5楼走4层,需要4×36=144级台阶。 - 题目6:最大公约数和最小公倍数的关系是它们的乘积等于两个数的乘积。所以24和60的最大公约数和最小公倍数之和为24×60/(24,60)=...
3. 楼梯台阶及扶手:检查台阶的高度、深度是否一致,防滑性能如何,扶手安装牢固,无晃动,高度适宜,符合安全规范。 4. 墙面:检查墙面的平整度、色泽一致性,无空鼓、开裂、脱落现象,涂料或壁纸质量合格。 5. ...
主尺寸与特性**:具体列出油轮的长度、宽度、吃水深度等主要物理尺寸数据及其它技术参数。 ### 四、载重量与容量 - **004. 载重量与容量**:详细说明油轮的最大载重量(73,000DWT),以及各种舱室如货舱、燃料舱等...
9. **几何问题**:题目18中通过树木的数量和时间计算汽车的速度,以及题目24中通过楼梯台阶数量求解楼层高度。 10. **应用问题**:题目14中通过已知的骡子运货量推算增加骡子后的总运货量。 11. **整数除法的余数...
课程的教学大纲详细列出了各个学习模块,包括: 1. 制图基本知识:这部分介绍了制图工具的使用方法,如丁字尺、三角板、图板、圆规等,还涉及到图纸的规格、图线绘制、尺寸标注等内容,以及几何作图技巧。 2. 投影...
- 第1题考察了组合问题,通过设未知数(5元人民币的数量)和列出等式解决。 - 第2题涉及到几何形状的面积比较,要求学生理解长方形和平行四边形面积的计算方法。 - 第3题讨论了小数乘法的结果,强调了乘积可能是...
最后是成本预算部分,方案中详细列出了各项服务的预计费用,包括人工、材料、设备的使用和维护等,这不仅有助于合理分配资源,保证保洁服务的可持续性,同时也为电站管理层提供决策参考,确保经济效益和环境效益的...
这些记录详细列出了各项工程的质量要求、施工标准以及验收结果,旨在确保工程的质量和安全。 1. 地面砖面层: - 验收依据为《建筑装饰装修工程质量验收规范》GB50210-2001。 - 要求面层使用的板块品种和质量需...
《建筑面积怎么计算》这篇文档详细阐述了在房地产测量中如何计算建筑面积,并且列出了10种不计入建筑面积的情况。在了解这些知识时,首先要明确建筑面积的重要性,它涉及到产权的界定、物业费的计算以及购房者的权益...
1. 目录:列出所有图纸的清单。 2. 建筑设计说明和做法说明:规定所遵循的规范和具体做法。 3. 平面施工图:如一层平面图关注散水、室外台阶、门窗楼梯等,地下室平面图强调墙体处理、防水和设备间定位,标准层和...
这个表格详细列出了需要验收的各项设施和设备,涵盖了办公楼日常运营中的关键元素,以确保所有设施的质量和功能完好。以下是基于表格内容的详细知识点解释: 1. **地台地毯**:验收时需检查地毯的铺设是否平整,...
12. **装饰木门扇定额**:包括门扇制作和安装,每扇门通常预设2只铜合页,但门框制作和安装、门锁安装通常需要单独列出项目计算。 此外,材料、成品、半成品的价格计算中,可能需要考虑场外运输、场内水平和垂直...
楼梯踢脚线、防静电活动地板附件等的计算,要求在工程量清单中单独列出,以确保完整性和准确性。 七、工程量运算规则 整体面层、找平层、垫层、块料面层的面积计算遵循一定的规则,例如扣除特定结构所占面积,不...