技术标签: HDOJ
根据题意,先列出前几年的牛头数,试着找找规律:
第n年: |
n=1 |
n=2 |
n=3 |
n=4 |
n=5 |
n=6 |
n=7 |
n=8 |
n=9 |
fn头牛? |
f1=1 |
f2=2 |
f3=3 |
f4=4 |
f5=6 |
f6=9 |
f7=13 |
f8=19 |
f9=28 |
我们可以得出这样一个公式:fn=fn-1+fn-3 再理解一下,fn-1是前一年的牛,第n年仍然在,fn-3是前三年那一年的牛,但换句话说也就是第n年具有生育能力的牛,也就是第n年能生下的小牛数。 编程序,求解这个公式就行了。 当然,第1-3年的数目,需要直接给出。 很像斐波那契数列,有不一样之处,道理、方法一样。其实,在编程之前,讲究先用这样的方式建模。
//解法1:迭代解法
#include <iostream>
using namespace std;
int main()
{
int n,i;
int f1, f2, f3, fn;
while(cin>>n&&n!=0)
{
//下面求第n年有几头牛
f1=1;
f2=2;
f3=3;
if(n==1)
cout<<f1<<endl;
else if(n==2)
cout<<f2<<endl;
else if(n==3)
cout<<f3<<endl;
else
{
for(i=4; i<=n; i++)
{
fn=f3+f1;
f1=f2; //f1代表前3年
f2=f3; //f2代表前2年
f3=fn; //f3代表前1年
}
cout<<fn<<endl;
}
}
return 0;
}
[cpp] view plain copy print?在CODE上查看代码片派生到我的代码片
//解法2:定义递归函数(效率低,不建议用)
#include <iostream>
using namespace std;
int f(int n);
int main()
{
int n;
while(cin>>n&&n!=0)
{
cout<<f(n)<<endl;
}
return 0;
}
int f(int n)
{
if(n<4)
return n; //第1,2,3年,各为1,2,3头
else
return f(n-1)+f(n-3); //第n年为前一年的和前3年的相加
}
这个思路更高大上一些,感觉我的思路像小孩
调用一次计时器方法:[cpp] view plaincopymyTimer = [NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(scrollTimer) userInfo:nil repeats:NO]; //不重复,只调用一次。tim
下载和解压下载matlab2018b for linux的iso文件,root用户可以直接挂载查看iso文件,非root用户不能挂载,这里采用7z软件linux版解压,可以直接解压iso文件下载地址:http://sourceforge.net/projects/p7zip/files/p7zip/tar -jxvf p7zip*.tar.bz2安装README说明mv makefil...
使用单片机的流程:1、程序开发过程:源代码编写——编译生成可执行程序——烧录2、单片机工作流程:单片机上电——时钟模块起振,cpu有了时钟节拍,单片机内部各模块开始工作——cpu从ROM中逐条读取可执行程序来执行,RAM存储变量配合程序执行,直到关机3、调试程序典型的单片机都是12T,12T(51单片机内部会对外部时钟进行分频再给cpu,内部cpu主频是12MHZ;1T单片机...
SpringDataJPA(一)简介Spring Data JPA 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的一套 JPA 应用框架,可使开发者用极简的代码就可以实现对数据库的访问和操作。它提供了包括增删改查等在内的常用功能,且易于扩展!学习并使用Spring Data JPA 可以极大提高开发效率!它是把JPA又封装了一遍,我们的 dao层中只需要写接口,就自动具有了...
JS移动DOM节点,将某节点下所有子节点移动(剪切)到另一个节点下。新手很容易踩的坑!题目(新手练习题)BUG第一种错误第二种错误解决方案第一种解决方案(无循环)第二种解决方案第三种解决方案(推荐)总结重点:移动完一个非尾部节点之后,后面的节点会依次部位上来,并且节点数据的长度会实时变化!!题目(新手练习题)将上方绿色实线框中的两个列表移动(剪切)到下方绿色虚线框中。ps:1、绿色实线框被一个div包裹,绿色虚线框被一个div包裹;2、绿色实线框中的子节点有两个,分别是圆点样式的列表和圆圈样式的
如标题所示,目的是将矩阵进行PCA分析最终得到降维后的新主成分,对于特征值特征向量的提取方法是通过svd。代码和函数名称定义如下/如图所示function [Xm,U,L]=pca(X,K);% Usage: [Xm,U,L] = pca(X,K)% Inputs:% X[M x N]Compound data matrix.% K1x1Number of eigenval...
Angular运行时报错:ng 不是内部或外部命令一、运行命令ng -v时报错,添加环境变量此电脑-属性-高级系统设置-环境变量-Path添加:node_global二、运行命令ng -serve时报错,添加环境变量此电脑-属性-高级系统设置-环境变量-Path添加:node-cache...
背景首先我们的前端是分成了 pc端 和 移动端 两部分,并非一个整体项目,但是目前网站域名只有一个,即 www.xxx.com其次 pc端 项目是多页面项目,而移动端项目是基于 vue 的 SPA,所以 pc端 和 移动端的访问路径是不一样的最后移动端的路由由 hash模式 更改为 history模式,此模式需要后端 nginx 支持需求当用户对网站进行访问的时候,动态读取客户端是pc...
简述队列模块实现多生产者、多消费者队列。当信息必须在多个线程之间安全地交换时,它在线程编程中特别有用。此模块中的Queue类实现所有必需的锁定语义。这取决于Python中线程支持的可用性;参见线程模块。模块实现了三种类型的队列,它们只是在检索条目的顺序上有所不同。在FIFO队列中,第一个添加的任务是第一个检索到的任务。在后进先出队列中,最近添加的条目是第一个检索到的条目(像堆栈一样操作)。使用...
标题栏布局:中间的TextView为主标题,左右各有TextView和ImageView,可见度为gone,使用时在代码中控制可见。部分属性封装在自定义style中。<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
豆豆的三进制计算机时间限制: 1 Sec内存限制: 128 MB题目描述豆豆最近思考计算机为什么要使用二进制的时候,突然想到为什么不使用三进制呢。三进制明显更适合人类思维。毕竟三进制可以表示事物的三种状态(真,假,未知)三进制是以3为基数的进制。和二进制一样,三进制的数位,称为三进制位(trit),通常,三进制中使用0、1、2三个数字。n!末尾有多少个0这样的问题对于豆豆来说是...
1.进程的定义标准定义:进程是可并发执行的程序,是在一个数据集合上的运行过程。 通俗来说,硬盘上的一个可执行文件经常被称为程序,在Linux系统中,当一个程序开始执行后,在开始执行到执行完毕退出这段时间里,它在内存中的部分就被称作一个进程。2.进程的分类进程一般分为交互进程、批处理进程和守护进程三类。 守护进程总是活跃的,一般是后台运行。守护进程一般是由系统在开机时通过脚本自动激活启动或超级用户