一个顽猴沿着一座小山的n级台阶向上跳,猴子上山一步可跳1级或3级,试求上山的n级台阶有多少种不同的爬法。

#include<stdio.h>
void main(){
	int  k,n;
	long f[1000];
	printf("请输入台阶总数:");
	scanf("%d",&n);
	f[1]=1;f[2]=1;f[3]=2;
	for(k=4;k<=n;k++){
		f[k]=f[k-1]+f[k-3];
	}
	printf("s=%ld\n",f[n]);
}

这一问题实际是一个整数有序可重复拆分问题

时间: 2024-08-24 11:56:09

一个顽猴沿着一座小山的n级台阶向上跳,猴子上山一步可跳1级或3级,试求上山的n级台阶有多少种不同的爬法。的相关文章

C语言:一个球从 100 米落下,每次落地后反跳回原一半,再落下,再反弹。求第10次高度?sum?

#include<stdio.h> int main() {    double max=100.0;  double sum=0;  int i=0;  for(i=1;i<10;i++)  {   max=max/2.0;   sum=sum+max*2;  }  printf("max=%lf \n",max);  printf("sum=%lf \n",sum);  return 0; }

第39级台阶 每步1个或2个台阶 有多少种上法

小明刚刚看完电影<第39级台阶>.离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!站在台阶前,他突然又想着一个问题:如果我每一步只能迈上1个或2个台阶.先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步.那么,上完39级台阶,有多少种不同的上法呢?请你利用计算机的优势,帮助小明寻找答案. #define _CRT_SECURE_NO_WARNINGS#include <string.h>#include <stdlib.h>#include <

c语言:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?

一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法? 解:把n级台阶时的跳法记为f(n),当n>2时,第一次跳的时候有两种不同的选择:一是第一次只跳1级,此时跳法数目等于后面剩下的n-1级台阶的跳法数目,即为f(n-1);另外一种是第一次跳2级,此时跳法数目等于后面剩下的n-2级台阶的跳法数目,即为f(n-2);因此n级台阶时的跳法为f(n)=f(n-1)+f(n-2).不难看出这实际是斐波拉契数列的变形应用,把斐波拉契数列的每一项向前移动了1位. 程序:

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

import java.util.HashMap; //一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. public class Solution { //方法一:递归求解 public static int JumpFloor1(int n) { if(n<1){ return 0; } if(n==1){ return 1; } if(n==2){ return 2; } return JumpFloor1(n-1)+JumpFloor1(n-2)

!HDU 4346 插旗子RGR的插法有多少种-思维&amp;正难则逆&amp;思维!

题意:只有R和G两种旗子,美丽的插法是存在两个R的中点插G的情况,现在给你一个字符串代表现在有些地方已经插了,求美丽的插法有多少种 分析: 美丽=总 - 不美丽 所以我们来求不美丽有多少种. 这里就是思维的问题了:一个不美丽的序列必须满足的条件是任何两个相邻R的距离为奇数并且所有的相邻R的距离相等. 奇数这是显然的,如果两个相邻的R不为奇数,那么它们的中点存在,并且是G,这与不美丽矛盾: 距离相等也很好证:设三个相邻的R,R1R2的距离为x1,R2R3的距离为x2,则R1R3=x1+x2,因为x

面试算法题:爬楼梯,N级楼梯有多少种走法?

By Long Luo 个人博客链接 最近去面试时,在一家小公司面试时,公司小BOSS给我出了一道算法题: 一个人爬楼梯,一步可以迈一级,二级,三级台阶,如果楼梯有N级,要求编写程序,求总共有多少种走法. 这个问题应该是一个很老的题目了,用中学数学来说,就是一个排列组合问题.当时拿到这个题目之后,首先想到使用递归的思想去解决这个问题: N级楼梯问题可以划分为:N-1级楼梯,N-2级楼梯,N-3级楼梯的走法之和. 先计算下0,1,2,3及楼梯有多少种走法: 1 --> 1 2 --> 11 2

9.9递归和动态规划(十一)——算出有几种括号的放法可使该表达式得出result值

/** * 攻略:给定一个布尔表达式,由0.1.&.|和^等符号组成,以及一个想要的布尔结果result,实现一个函数,算出有几种括号的放法可使该表达式 * 得出result值. */ 两种方法: 方法一: /** * 思路:迭代整个表达式,将每个运算符当作第一个要加括号的运算符. * @param exp * @param result * @param s:start * @param e:end * @return */ public static int f(String exp,boo

AX中四种库存ABC分析法原理研究

库存ABC分类,简单的说就是抓大放小,是为了让我们抓住重点,用最大精力来管理最重要的物料,而对于不太重要的物料则可以用较少的精力进行管理.它和我们平常说的八二法则有异曲同工之妙. 既然要应用库存ABC方法,那么我们首先要决定,哪些物料是最重要的A类,哪些物料是一般重要的B类,哪些物料是最不重要的C类. 最简单的办法自然就是在物料主表中直接把ABC填上去,然后在日常业务中,我们随时都可以看到这是哪一类物料,从而决定了我们对其采取的管理方式(最重要的一个不能差,最不重要的,差一点半点可以容忍).为了

海滩上有一堆桃子,五只猴子来分。 第一只猴子把这堆桃子平均分为五份,多了一个, 这只猴子把多的一个扔入海中,拿走了一份。 * 第二只猴子把剩下的桃子又平均分成五份,又多了一个, 它同样把多的一个扔入海中,拿走了一份, 第三、第四、第五只猴子都是这样做的, * 问海滩上原来最少有多少个桃子?

题目:海滩上有一堆桃子,五只猴子来分. 第一只猴子把这堆桃子平均分为五份,多了一个, 这只猴子把多的一个扔入海中,拿走了一份. * 第二只猴子把剩下的桃子又平均分成五份,又多了一个, 它同样把多的一个扔入海中,拿走了一份, 第三.第四.第五只猴子都是这样做的, * 问海滩上原来最少有多少个桃子? 思路1: 逆序 原来 第1只 第2只 第3只 第4只 第5只 n n-n/5-1 m-m/5-1 x-x/5-1 使用递归来解决问题 public class 第四十一题猴子分桃子 { public s