科协招新题目C:金字塔上的蜗牛
来源:互联网 发布:蚂蚁分类信息5.8 源码 编辑:程序博客网 时间:2024/04/30 11:11
题目描述
C金字塔上的蜗牛
ProblemDescription
场景一:
从前有一个勤奋的蜗牛叫小蜗,他有一个梦想—去埃及金字塔的顶端看一下,于是他就央求鹰哥哥带他到金字塔上去,鹰哥说:”老弟啊,不是哥不帮你?你这可是单程票啊。金字塔老高了,有N层呢”。小蜗说:人总归是要有梦想的,没有梦想跟咸鱼有什么区别?于是他就带了N包士力架,坐上了前往金字塔的航班。
场景二:
蜗牛来到了金字塔的 1层,于是他开始了征战金字塔。已知,蜗牛每天可以下滑1层、保持原有高度、向上爬1层。维持原高度和向上爬,每次都要消耗蜗牛的能量,每次都要通过吃一根士力架来补充体力。下滑不需要能量。问士力架恰好剩1根的时候,蜗牛还苦逼的呆在金字塔的1层的全部可能性。
Input
输入数据N(0<N<=8)。
Output
输出蜗牛每天所在的金字塔的楼层,每个数据间用空格分离,每种可能情况占一行。
SampleInput
3
SampleOutput
11 1
12 1 1
11 2 1
12 1 2 1
12 2 1
12 3 2 1
分析:
在每一层,蜗牛都有下滑、保持和向上的选择。
可以想象蜗牛面临有三条路的岔路口,每条路又会三条路的岔路口
要走完所有路然后判断是否符合要求
蜗牛爬金字塔的所有情况分为三种,
选择能量楼层下滑0-1保持-10向上-11能量大于等于1且楼层大于等于1时进行选择路径
如果能量小于1或者楼层小于1,超出范围,那么这一个选择不能完成题目要求,
说明该岔路口不通,结束该条路,换上个岔路口走
能量等于1而且楼层等于1时,符合题意,输出足迹,结束这条路,走上个岔路口
足迹的保存通过数组,采用计数变量实现足迹可以退回
解法:
#include "stdio.h"int step[16];//分而治之,递归//能量,层数,递归的级数void climb(int energy,int level,int len){step[len]=level;if(level<1 || energy<1){return;}if(energy==1){if(level==1){for(int i=0;i<=len;i++){printf("%d",step[i]);if(i!=len){printf(" ");}}printf("\n");return;}}climb(energy,level-1,len+1);climb(energy-1,level,len+1);climb(energy-1,level+1,len+1);}void main(){int N;while(printf("请输入N:\n"),scanf("%d",&N)!=EOF)climb(N,1,0);}
结果:
0 0
- 科协招新题目C:金字塔上的蜗牛
- 科协招新题目B:分割
- nyoj题目599:奋斗的小蜗牛
- 题目599 奋斗的小蜗牛
- 慢慢爬的蜗牛,新的起点
- 奋斗的小蜗牛 南阳理工ACM 题目599
- 【题目】[USACO5.2]蜗牛的旅行Snail Trails
- 总结:WHUACM 2007暑假招新笔试(附原题,有许多经典的面试题目)
- 科协电脑部C语言培养方案
- c 金字塔
- 360的流氓新招
- 围棋——金字塔上的游戏
- 【技术类】教你两招,轻松删除影像金字塔(上)
- XDU 1161 - 科协的数字游戏II
- XDU 1160 - 科协的数字游戏I
- 我出的招网站程序员题目
- Google校招 的一道题目
- 关于校招笔试题目的思考
- CC学习笔记3:FIA类:标识和鉴别
- Tomcat重启负载高问题定位
- highcharts设置Y轴范围
- 关于我的第一篇博客
- openssl 非对称加密DSA,RSA区别与使用介绍
- 科协招新题目C:金字塔上的蜗牛
- Python学习之路二---(基础知识)
- jQuery 学习笔记(1)
- sql查询语句
- Swift控制流
- python自学之字典
- DSA与RSA的区别
- iOS:hidesBottomBarWhenPushed的正确用法
- 教父经典语录