A - 养兔子

Description

一对成熟的兔子每天能且只能产下一对小兔子,每次都生一公一母,每只小兔子的成熟期是1天,小兔子出生后隔一天才能再生小兔子。第一天某人领养了一对成熟的兔子,一公一母,请问第N天以后,他将会得到多少对兔子。

Input

输入为一个整数n(1 ≤ n ≤ 90)。

Output

对应输出第n天有几对兔子(假设没有兔子死亡现象,而且是一夫一妻制)。

Sample

Input

2

Output

2

Hint

数据类型可以用64位整数:long long

#include <stdio.h>
#include <stdlib.h>
int main()
{int n,i;long long int f[100];scanf("%d",&n);f[1]=1;f[2]=2;for(i=3; i<=n; i++){f[i]=f[i-1]+f[i-2];}printf("%lld\n",f[n]);return 0;
}

B - 母牛的故事

Description

有一对夫妇买了一头母牛,它从第2年起每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?

Input

输入为一个整数n(0< n< 55)。

Output

输出在第n年的时候母牛的数量。

Sample

Input

5

Output

6
#include <stdio.h>
#include <stdlib.h>
int main()
{int n,i;long long int f[100];scanf("%d",&n);f[1]=1;f[2]=2;f[3]=3;f[4]=4;for(i=5; i<=n; i++){f[i]=f[i-1]+f[i-3];}printf("%lld\n",f[n]);return 0;
}

C - 鬼吹灯之龙岭迷窟

Description

在古希腊时期,有一天毕达哥拉斯走在街上,在经过铁匠铺前他听到铁匠打铁的声音非常好听,于是驻足倾听。他发现铁匠打铁节奏很有规律,这个声音的比例被毕达哥拉斯用数学的方式表达出来。

这个比例就叫做黄金分割比,它是指将整体一分为二,较大部分与整体部分的比值等于较小部分与较大部分的比值,其比值约为0.6180339887。这个比例被公认为是最能引起美感的比例,因此被称为黄金分割。

现在小玉有一个正整数数列,这个数列的前一项和后一项的比值十分趋近于黄金分割比,即(a[i])/(a[i+1])~ 0.6180339887,(i>=1),可是她只知道数列的第一项是5,现在她想通过已有条件推断出数列的任意项,请你帮助她编写一个程序计算。

Input

输入一个整数n(1<=n<=20)。

Output

输出一个数,代表这个数列的第n项a[n]。

Sample

Input

1

Output

5
#include <stdio.h>
#include <stdlib.h>
int main()
{int n,i;long long int f[100];scanf("%d",&n);f[1]=5;f[2]=8;for(i=3; i<=n; i++){f[i]=f[i-1]+f[i-2];}printf("%lld\n",f[n]);return 0;
}

此题的本质可视为:求斐波那契额数列。

递推公式:fn=fn-1+fn-2(n>=2)  f0=0,f1=1;

斐波那契数列的性质:

(1)性质一:模除周期性

数列的数模除某个数的结果会呈现一定周期性,因为数列中的某个数取决与前两个数,一旦有连着的两个数的模除结果分别等于第0 第一项的模除结果,那麽代表着一个新的周期的的开始,如果模除n,则每个周期中的元素不会超过n×n;

(2)性质二:黄金分割

随着i的增大Fi/Fi-1 接近于0.618.

(3)性质三:平方与前后项

从第二项开始,每个奇数项的平方都比前后两项之积多一,每个偶数项的平方比前后两项之积少一.

(4)性质四:

斐波那契数列的第n+2项代表了集合{1,2,...n}中所有不包含相邻正整数的子集的个数.

······

其他性质可参考此网站:(38条消息) 斐波那契数列性质总结_OJBFOWE的博客-CSDN博客_斐波那契数列性质

D - 骨牌铺方格

Description

在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数. 例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图:

Input

输入包含一个整数n,表示该测试实例的长方形方格的规格是2×n (0< n<=50)。

Output

输出铺放方案的总数。

Sample

Input

3

Output

3

Hint

hdoj2046 有链接提示的题目请先去链接处提交程序,AC后提交到SDUTOJ中,以便查询存档。

#include <stdio.h>
#include <stdlib.h>
int main()
{int n,i;long long int f[100];scanf("%d",&n);f[1]=1;f[2]=2;for(i=3; i<=n; i++){f[i]=f[i-1]+f[i-2];}printf("%lld\n",f[n]);return 0;
}

E - 爬楼梯

Description

小明是个非常无聊的人,他每天都会思考一些奇怪的问题,比如爬楼梯的时候,他就会想,如果每次可以上一级台阶或者两级台阶,那么上 n 级台阶一共有多少种方案?

Input

输入只有一行为一个正整数 n(1 ≤ n ≤ 50)。

Output

输出符合条件的方案数。
注意:64-bit 整型请使用 long long 来定义,并且使用 %lld 或 cin、cout 来输入输出,请不要使用 __int64 和 %I64d。

Sample

Input

4

Output

5
#include <stdio.h>
#include <stdlib.h>
int main()
{int n,i;long long int f[100];scanf("%d",&n);f[1]=1;f[2]=2;for(i=3; i<=n; i++){f[i]=f[i-1]+f[i-2];}printf("%lld\n",f[n]);return 0;
}

F - 三国佚事——巴蜀之危

Description

话说天下大势,分久必合,合久必分。。。却道那魏蜀吴三国鼎力之时,多少英雄豪杰以热血谱写那千古之绝唱。古人诚不我欺,确是应了那句“一将功成万骨枯”。 
是夜,明月高悬。诸葛丞相轻摇羽扇,一脸愁苦。原来是日前蜀国战事吃紧,丞相彻夜未眠,奋笔急书,于每个烽火台写下安排书信。可想,这战事多变,丞相运筹 帷幄,给诸多烽火台定下不同计策,却也实属不易。
谁成想这送信小厮竟投靠曹操,给诸葛丞相暗中使坏。这小厮将每封书信都投错了烽火台,居然没有一封是对的。不多时小厮便被抓住,前后之事却也明朗。这可急坏了诸葛丞相,这书信传错,势必会让蜀军自乱阵脚,不攻自破啊! 诸葛丞相现在想知道被这小厮一乱,这书信传错共有多少种情况。

Input

输入一个正数n,代表丞相共写了n(1 <= n <= 20)封书信。

Output

输出书信传错的情况数。

Sample

Input

3

Output

2
#include <stdio.h>
#include <stdlib.h>
int main()
{int n,i;long long int f[100];scanf("%d",&n);f[1]=0;f[2]=1;for(i=3; i<=n; i++){f[i]=(i-1)*(f[i-1]+f[i-2]);}printf("%lld\n",f[n]);return 0;
}

此题为错排问题,错排公式为:F(n)=(n-1)*[F(n-1)+F(n-2)]

解释:若有n个人,其中有甲乙······且有n把椅子,n个人都不坐属于自己的椅子。

1.首先甲先坐,有(n-1)个选择;

2.乙再来选:(1)乙选甲的,有:F[n-2]种

(2)乙选除了甲之外的椅子,有:F[n-1]种

所以,总的选法的递推公式为:F(n)=(n-1)*[F(n-1)+F(n-2)]

扩充:

G - 王小二切饼

Description

王小二自夸刀工不错,有人放一张大的煎饼在砧板上,问他:“饼不许离开砧板,切n(1<=n<=100)刀最多能分成多少块?”

Input

输入切的刀数n。

Output

输出为切n刀最多切的饼的块数。

Sample

Input

100

Output

5051

Hint

#include <stdio.h>
#include <stdlib.h>
int main()
{int n,i;long long int f[100];scanf("%d",&n);f[1]=2;for(i=2; i<=n; i++){f[i]=f[i-1]+i;}printf("%lld\n",f[n]);return 0;
}

解析:

切割次数 最大子子块数 饼中某条直线上存在的最大子块数
0 1 1
1 2 2
2 4 3
3 7 4
4 11 5
5 16 6

通过观察表中数据可知:递推公式为:f[n]=f[n-1]+n ;

扩展:通项公式为:an=n*(n+1)/2+1 ;

H - C语言实验——拍皮球

Description

小瑜3岁了,很喜欢玩皮球,看来今后喜欢打篮球的^_^。最近她发现球从手中落下时,每次落地后反跳回原高度的一半,再落下,每次球落地时数球跳了几次,数到n次时爸爸在边上喊停,问小瑜现在球到底总共走了多少距离,小瑜故作沉思状,爸爸又问接下来小球能跳多高啊,小瑜摇摇头,心想还没跳我怎么知道啊,难道爸爸是神啊!这时的你在边上出主意想给小瑜写个程序计算一下,因此任务就交给你啦!假设球的初始高度为h,计算第n次落地时球经过的距离,以及落地后反弹能有多高。

Input

每行有两个数,球的初始高度h(h<=100)和球落地的次数n(n <= 10),用空格分隔。

Output

输出第n次反弹时球经过的距离和球最后的高度,保留小数点后2位。

Sample

Input

100 1

Output

100.00 50.00
#include <stdio.h>
#include <stdlib.h>
int main()
{int i;double s,t,m,n;s=0;scanf("%lf%lf",&m,&n);t=m;for(i=1; i<=n; i++){s=s+m*2;m=m/2;}s=s-t;printf("%.2lf %.2lf",s,m);return 0;
}

I - 蟠桃记

Description

孙悟空在大闹蟠桃园的时候,第一天吃掉了所有桃子总数一半多一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n天准备吃的时候只剩下一个桃子。这下可把神仙们心疼坏了,请帮忙计算一下,第一天开始吃的时候一共有多少个桃子?

Input

输入包含一个正整数n(1≤n≤30),表示只剩下一个桃子的时候是在第n天发生的。

Output

输出第一天开始吃的时候桃子的总数。

Sample

Input

2

Output

4
#include <stdio.h>
#include <stdlib.h>
int main()
{int n,i;long long int f[100];scanf("%d",&n);f[1]=1;for(i=2; i<=n; i++){f[i]=(f[i-1]+1)*2;}printf("%lld\n",f[n]);return 0;
}

J - 马拦过河卒

Description

棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。棋盘用坐标表示,A点(0,0)、B点(n,m)(n,m为不超过15的整数),同样马的位置坐标是需要给出的。现在要求你计算出卒从A点能够到达B点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。

Input

一行四个数据,用空格分隔,分别表示B点的坐标和马的坐标。

Output

一个数据,表示所有的路径条数。

Sample

Input

6 6 3 3

Output

6
#include <stdio.h>
#include <stdlib.h>
long long int ma[30][30];
int  n, m, x, y;
int b[9][2] = {{0, 0}, {-2, -1}, {-1, -2}, {-2, 1}, {-1, 2}, {2, 1}, {1, 2}, {2, -1}, {1, -2}};int main() {scanf("%d%d%d%d",&n,&m,&x,&y);x += 1;y += 1;n += 1;m += 1;ma[1][1] = 1;int j,i;for (i = 0; i < 9; i++) {ma[x + b[i][0]][y + b[i][1]] = -1;}for (i = 1; i <= n; i++) {for ( j = 1; j <= m; j++) {if (ma[i][j] != -1) {if (ma[i - 1][j] == -1 || ma[i][j - 1] == -1) {ma[i][j] += 1;}ma[i][j] += ma[i - 1][j] + ma[i][j - 1];}}}printf("%lld\n",ma[n][m]);return 0;
}

做递推这类题的关键是找到关系,可通过画图的方法示意会比较直接,易于观察规律~

《程序设计基础II》实验3——递推相关推荐

  1. 山东理工大学-2022级-程序设计基础II-实验4 递推

    7-2 养兔子 分数 20 全屏浏览题目 切换布局 作者 ly单位 山东理工大学 一对成熟的兔子每天能且只能产下一对小兔子,每次都生一公一母,每只小兔子的成熟期是1天,小兔子出生后隔一天才能再生小兔子 ...

  2. 程序设计导引及在线实践_学院经纬计算学院程序设计基础与实验入选首批国家级一流本科课程...

    近日,教育部公布首批国家级一流本科课程认定清单,计算机与计算科学学院颜晖教授负责,张高燕.张泳.王云武.柳俊老师参与的<程序设计基础与实验>入选"线上线下混合式一流课程" ...

  3. 程序设计类实验辅助c语言,程序设计基础与实验

    spContent=C语言是古老而长青的编程语言,它具备了现代程序设计的基础要求,它的语法是很多其他编程语言的基础,在系统程序.嵌入式系统等领域依然是无可替代的编程语言,在各类编程语言排行榜上常年占据 ...

  4. 《程序设计基础》实验报告(第6次实验)

    <程序设计基础>实验报告(第6次实验) 学号 姓名 班级 实验名称:组合类.继承与多态 实验目的:掌握组合类.继承与多态的概念和使用 实验内容:(1)字符串类Mystring定义如下: c ...

  5. OJ《程序设计基础II》实验3——递推

    3-1 A - 养兔子 #include<stdio.h> int main() {int n,i;scanf("%d",&n);long long a[111 ...

  6. UVA11161 Help My Brother (II)【大数+递推】

    A Fibonacci sequence is calculated by adding the previous two members of the sequence, with the firs ...

  7. web程序设计基础R实验报告 2021年 ---太原理工大学

    每个实验中给出的练习代码不在此处进行运行,有问题的小可爱欢迎和博主交流呀! Educoder – Web程序设计基础2021秋 --实训作业全总结 文章目录 实验一: HTML基础 1. 实验内容 2 ...

  8. Python语言程序设计基础_实验四_函数(三)_答案_通识教育必修课程_上海师范大学

    实验4 函数(二) 答案 Python语言程序设计基础 上海师范大学 通识教育必修课程 授课教师:吴春英 徐晓钟 题目来源:上海师范大学网络教学平台(超星泛雅) I 实验要求

  9. 【西安交通大学程序设计基础Moodle实验13】 百钱买百鸡

    提示:本人程序仅供参考,学无止尽,请自行研究 文章目录 一.题目 二.代码 总结 一.题目 若3文钱可以买1只公鸡,2文钱可以买1只母鸡,1文钱可以买3只小鸡,求在买的公鸡数最多的前提下, 用100文 ...

最新文章

  1. oauth过滤login_OAuth2AuthenticationProcessingFilter资源认证服务器过滤器
  2. C#委托-委托不关心被封装的类
  3. linux语言的说明顺序有哪些,(linux常用头文件详解.doc
  4. 前端做后台管理系统有前途吗_关于后台管理系统前端项目的思考
  5. java数组 arraylist_JAVA 用数组实现 ArrayList
  6. Pytorch —— 优化器Optimizer(二)
  7. 好用又被遗忘的Char,String 方法
  8. opencv 4计算机视觉项目实战_资源|计算机视觉实战操作(PDF下载)
  9. Vivado2019.2下载(官网百度云)与安装(手把手)
  10. linux系统中权限有几种,Linux系统中三种基本权限
  11. 世界银行为孟加拉国建设数据中心提供贷款
  12. URL、域名、子域名、主机名
  13. BMP图片-文件头部信息
  14. 简单好用微服务套件AnnoViper DashBoard全新版来啦
  15. centos是arm还是amd_amd系列cpu安装linux
  16. +AI场景,3步懂图像识别产品
  17. 团购网站的发展趋势分析
  18. 在北京信息科技大学的发言
  19. 2022年软件评测师真题
  20. 学习记录baxter仿真 物体抓取

热门文章

  1. 下载chrome的.crx文件
  2. 面向对象下 abstract关键字(宋红康JAVASE)
  3. 不背字根学五笔视频教程
  4. 【@Scheduled定时任务】
  5. 视频流TS打包方式详解
  6. 非递归前序遍历二叉树,非递归中序遍历二叉树,非递归后续遍历二叉树
  7. 通过一个例子快速上手矩阵求导
  8. SpringMVC与JSON传值,取值,使用SpringMVC实现文件的上传与下载,SpringMVC拦截器
  9. potplayer清晰度设置
  10. 基于Python的蒙特卡罗方法估计Pi值的实现