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

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

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


顺推实例:
兔子生殖过程

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. Thanks

    今天,突然有一种爽的感觉.是做题做到爽的感觉,晚上就不是非常强烈了,脖子疼,要断了. 中午.妈妈给我打了电话,后来才知道爸爸的嗓子都哑了.说不出话来了都,哎,这都快一个月没有下雨了.地都干得要命了.好 ...

  2. Codeforces 12D Ball 树形阵列模拟3排序元素

    主题链接:点击打开链接 #include<stdio.h> #include<iostream> #include<string.h> #include<se ...

  3. Intent用法

    Intent是android系统中的最佳男主角,Intent翻译成中文的意思是"意图",说白了就是"我想要...",也就是说眼下运行中的Activity想要请其 ...

  4. C奇淫技巧,——宏神奇

    一个.宏列表 当这个问题面临: 有一个标志变量.位代表对应的含义. 我们须要提供一组函数来訪问设置这些位.可是对于每一个标记位的操作函数都是相似的.若有32个位,难道要搞32套相似的操作函数么? 你或 ...

  5. PHP訪问MySql数据库 0基础篇

    在站点后台,常常要与数据库打交道.本文介绍怎样使用XAMPP来管理MySql数据库及怎样用PHP来訪问MySql数据库. 一.使用XAMPP来管理MySql数据库 首先使用XAMPP打开MySql的管 ...

  6. tomcatport占用,如何识别和kill

    开始-执行-cmd,进netstat -ano你可以看到整个port入住. 增加要想知道谁占用了我们的port8080,输入下面命令 C:\Documents and Settings\Adminis ...

  7. DNA和纳米(Nano)Fusion技术的发展趋势

    细观国内外有关DNA与Nano技术的报道.不得不承认存在不小的差距,并且差距有继续拉大的趋势. 在我们国内,DNA技术是作为遗产基因来对待的.引用的有关中文參考资料一般比較陈旧.缺少參考价值.在发达国 ...

  8. Gradle 载入中 Android 下一个.so档

    1.在project下新建 jni/libs  目录   . jni 是和原来的libs  同级 ,将全部的.so文件放入 新建的libs文件下 2.在build.gradle 文件里新增下面内容到a ...

  9. Cordova WP8 插件开发

    原文:Cordova WP8 插件开发 前面博客中介绍了Cordova WP8平台上的安装部署,Cordova扩展可以利用WP8本地代码扩展WebApp的功能,调用本地能力需要开发相应的插件,下面以闪 ...

  10. Hadoop Hive sql 语法详细解释

    Hive 是基于Hadoop 构建的一套数据仓库分析系统.它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,能够将结构 化的数据文件映射为一张数据库表,并提供完整的SQL查 ...