数据结构是算法实现的基础,算法总是要依赖于某种数据结构来实现的。往往是在发展一种算法的时候,构建了适合于这样的算法的数据结构。一种数据结构假设脱离了算法,也就没有存在的价值了。
算法的作用----解决不论什么一个实际问题,都不可避免地涉及到算法的问题,通过一定的算法,得到一个最优(或较优)的方案。

递推算法:递推算法是一种简单的算法,即通过已知条件,利用特定关系得出中间推论,直至得到结果的算法。

顺推法:从已知条件出发,逐步推算出要解决的问题的方法。
逆推法:从已知问题的结果出发,用迭代表达式逐步推算出问题的開始的条件,即顺推法的逆过程。


顺推实例:
兔子生殖过程

c++代码:
#include<iostream>
int main()
{
using namespace std;
const int NUM = 13;
int count = 0;
int rabbit[NUM] = {1,1};
for (int i=0; i<NUM-2; i++)
{
rabbit[i+2] = rabbit[i] + rabbit[i+1];
}
for (int j=0; j<NUM; j++)
{
cout << j << "月兔子总数: " << rabbit[j] << "仅仅\n";
}
return 0;
}
php代码:
<?php
$rabbit = array();
$rabbit[1] = $rabbit[0] =1;
define("MONTH", 12);
for ($i=2; $i<=MONTH; $i++) {
$rabbit[$i] = $rabbit[$i-2] + $rabbit[$i-1];
}
for ($i=0; $i<=MONTH; $i++) {
echo "第 " . $i . " 月,兔子总数量为:". $rabbit[$i] . "仅仅<br/>";
}
?>
C++编译执行结果

逆推实例:

父亲准备为小龙的四年大学生活一次性储蓄一笔钱,使用整存零取的方式,控制小龙每月月底取1000元准备下月使用。如果银行整存领取的年息为1.71%,请算出父亲至少须要存入多少钱才行。

c++代码:
#include<iostream>
int main()
{
using namespace std;
const double RATE = 0.0171;
double money[48];
money[47] = 1000;
for (int i=47; i>0; i--)
{
money[i-1] = (money[i] + 1000)/(1+RATE/12);
}
for (int j=47; j>0; j--)
{
cout << "第 " << j << " 月本利合计为: " << money[j] << " 元\n";
}
return 0;
}
php代码:
<?php
$month = array();
$month[47] = 1000;
define("RATE", 0.0171);
for ($i=47; $i>0; $i--) {
$month[$i-1] = ($month[$i] + 1000)/(1+RATE/12);
}
for ($i=47; $i>0; $i--) {
echo "第 " . $i . " 月本息合计为:" . $month[$i] . "元<br />";
}
?>
C++编译执行结果




数据结构与算法之递推算法 C++与PHP实现的更多相关文章

  1. 穷举算法和递推算法(Java)

    穷举算法 概念: 最简单算法,依赖计算机的强大计算能力穷尽每一种可能的情况.穷举算法效率不高,但是适合一些没有明显规律可循的场合. 思想: 在使用穷举算法时,需要明确问题答案的范围,这样才可能在指定范 ...

  2. Java实现 蓝桥杯 算法提高 递推求值

    算法提高 递推求值 时间限制:1.0s 内存限制:256.0MB 问题描述 已知递推公式: F(n, 1)=F(n-1, 2) + 2F(n-3, 1) + 5, F(n, 2)=F(n-1, 1) ...

  3. 求逆元的两种方法+求逆元的O(n)递推算法

    到国庆假期都是复习阶段..所以把一些东西整理重温一下. gcd(a,p)=1,ax≡1(%p),则x为a的逆元.注意前提:gcd(a,p)=1; 方法一:拓展欧几里得 gcd(a,p)=1,ax≡1( ...

  4. 从三数之和看如何优化算法,递推-->递推加二分查找-->递推加滑尺

    人类发明了轮子,提高了力的使用效率. 人类发明了自动化机械,将自己从重复的工作中解脱出来. 提高效率的方法好像总是离不开两点:拒绝无效劳动,拒绝重复劳动.人类如此,计算机亦如是. 前面我们说过了四数之 ...

  5. 递推算法,AI衍生

    引言 最近在刷leetcode算法题的时候,51题很有意思: 题目是这样的: n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击.给你一个整数 n ,返回 ...

  6. 【uva 12627】Erratic Expansion(算法效率--递推)

    题意:初始1个红气球,每小时后,1个红气球会变成3个红气球和1个蓝气球,而1个蓝气球会变成4个蓝气球.问经过N小时后,第L~R行一共有多少个红气球. 解法:问行数就定义f[i][j]表示 i 小时后前 ...

  7. c语言-递推算法1

    递推算法之一:倒推法 1.一般分析思路: if 求解初始条件F1 then begin { 倒推 } 由题意(或递推关系)确定最终结果Fn; 求出倒推关系式Fi-1 =G(Fi ); i=n; { 从 ...

  8. 每日算法之递推排序(P1866 编号)

    兔子也是数字控:每个兔子都有自己喜欢的数字区间,找出能让所有兔子都满意的组合. 将所有兔子喜欢的序号按从小到大排序,此时如果小序号的兔子选择了一个数字,则之后的兔子只要排除排在它之前的兔子数(由于已经 ...

  9. 算法笔记_091:蓝桥杯练习 递推求值(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 已知递推公式: F(n, 1)=F(n-1, 2) + 2F(n-3, 1) + 5, F(n, 2)=F(n-1, 1) + 3F(n- ...

随机推荐

  1. VS2015企业版本(安装包+key)

    VS2015中文企业版: http://pan.baidu.com/s/1eQtWvNs VS2015英文企业版: http://pan.baidu.com/s/1i3gZaVN —————————— ...

  2. Lua中的weak表——weak table(转)

    弱表(weak table)是一个很有意思的东西,像C++/Java等语言是没有的.弱表的定义是:A weak table is a table whose elements are weak ref ...

  3. 类似的微博推断客户关系sql声明

    类别似新浪微博的关注和共同关心 不知道别人是怎么设计的. 反正我是例如以下设计的 ID   USER   FRIEND 1     A         B 2      B         A 3   ...

  4. 让struts2和servlet共存

    由于struts2默认的是拦截全部的请求 由配置文件能够看出 <filter> <filter-name>struts2</filter-name> <fil ...

  5. 为RadComboBox添加SelectionChanging事件

    代码非标准,仅供参考. using System; using System.Collections.Generic; using System.Linq; using System.Windows. ...

  6. 使用js在新窗口中POST数据

    最近在做自己的博客,写文章的时候有一个预览功能,当时使用的是弹出框来进行预览,感觉体验不是很好. 然后想到了写邮件时候的新窗口预览,查了下126邮箱和qq邮箱的预览实现效果,以及各种谷歌百度stack ...

  7. ios新开发语言swift 新手教程

    http://gashero.iteye.com/blog/2075324 视频教程:http://edu.51cto.com/lesson/id-26464.html

  8. Swift开发学习(两):Playground

    Swift开发学习:Playground 大约 对于软件用户.游戏玩家,我一直提倡用户体验.也是用户,是各种开发工具的使用者.也会喜欢用户体验做得好的工具软件.这次苹果想开发人员所想,提供了一个能够玩 ...

  9. Linux核心regulator建筑和准备

    电源引入的物种 (百度百科)LDO这是low dropout regulator,这意味着低压差线性稳压器.它相比于传统的线性调节器.传统的线性稳压器.例如78xx系列芯片需要输入电压比输出电压高2v ...

  10. Codefoces 432 C. Prime Swaps

    哥德巴赫猜想: 任一大于2的偶数,都可表示成两个素数之和. 任一大于5的整数都可写成三个质数之和. 贪心取尽可能大的素数..... C. Prime Swaps time limit per test ...