目                       录

壹 :递 归

一 . 递 归 初 步( 理 论 )

二 . 递 归 深 入( 习 题 )

贰 :递 推

一  .  递  推  初  步 ( 理 论 )

二 . 递 推 深 入 ( 习 题 )

叁 : 贪 心

一  .  贪 心  初  步 ( 理 论 )

二 . 贪 心 深 入 ( 习 题 )




壹 :递 归

一 . 递 归 初 步( 理 论 )

​是指函数/过程/子程序在运行过程序中直接或间接调用自身而产生的重入现象。在函数中函数不断引用自身,直到引用的对象已知。使用递归解决问题,思路清晰,代码少。但是在主流高级语言中使用递归算法要耗用更多的栈空间,所以在堆栈尺寸受限制时,应避免采用。所有的递归算法都可以改写成与之等价的非递归算法。

递归函数基本写法

/*题目:算出从1到n之间所有数的和
*/
#include<bits/stdc++.h>
using namespace std;
int n,sum=0;
//sum用来求和
int fun(int num,int i)
{
//i表示下表if(i<=num) {sum+=i;fun(num,i+1);}else {return 0;}
}
int main()
{cin>>n;fun(n,0);cout<<sum;return 0;
}

这样就完成了 一个递归的过称

二 . 递 归 深 入( 习 题 )

1148 - 【入门】数数小木块-东方博宜OJhttps://oj.czos.cn/p/1148

思 路 :函 数 内 算 出 每 一 层 积 木 的 块 数

再 在 主 函 数 内 依 层 求 和

题 解 :

#include<bits/stdc++.h>
using namespace std;
int num(int c)
{int r;if(c==1) {r=1;}else{r=num(c-1)+c;}  return r;
}
int main()
{int n,res=0;cin>>n;while(n){res=res+num(n);n--;}cout<<res;return 0;
}

1238 - 【入门】统计每个月兔子的总数-东方博宜OJhttps://oj.czos.cn/p/1238

思 路 :(这 题 使 用 递 归 会 超 时)

使 用 普 通 递 归 与 数 组 结 合 防 止 超 时

代 码:

#include<bits/stdc++.h>
using namespace std;
int main()
{long long a[60],x;cin>>x;a[1]=1;a[2]=1;for(int i=3;i<=x;i++){a[i]=a[i-1]+a[i-2];}cout<<a[x];return 0;
}

1223 - 【入门】汉诺塔的移动次数-东方博宜OJhttps://oj.czos.cn/p/1223

思 路 :这 题 重 点 是 找 到 规 律

然 后 在 进 行 递 归 求 解

代 码 :

#include<bits/stdc++.h>
using namespace std;
int fun(int n)
{int r=0;if(n==1){return 1;}else{return fun(n-1)*2+1;}
}
int main()
{int n;cin>>n;cout<<fun(n); return 0;
}


贰 :递 推

一  .  递  推  初  步 ( 理 论 )

递推是按照一定的规律来计算序列中的每个项,通常是通过计算前面的一些项来得出序列中的指定项的值。其思想是把一个复杂的庞大的计算过程转化为简单过程的多次重复,该算法利用了计算机速度快和不知疲倦的机器特点。

递 推 的 基 本 写 法

/*https://oj.czos.cn/p/1238
*/
#include<bits/stdc++.h>
using namespace std;
int main()
{long long a[60],x;cin>>x;a[1]=1;a[2]=1;for(int i=3;i<=x;i++){a[i]=a[i-1]+a[i-2];}cout<<a[x];return 0;
}

二 . 递 推 深 入 ( 习 题 )

1298 - 【基础】摘花生问题-东方博宜OJhttps://oj.czos.cn/p/1298

思 路 :找 到 摘 花 生 的 最 好 的 路 线

利 用 递 推 的 思 想 进 行 求 解

代 码 :

#include<bits/stdc++.h>
using namespace std;
int main()
{int x,y;cin>>x>>y;int a[x+2][y+2];for(int i=1;i<=x;i++){for(int j=1;j<=y;j++){cin>>a[i][j];}}for(int i=2;i<=x;i++){a[1][i]+=a[1][i-1];}for(int i=2;i<=x;i++){a[i][1]+=a[i-1][1];}for(int i=2;i<=x;i++){for(int j=2;j<=y;j++){if(a[i][j-1]>a[i-1][j]){a[i][j]+=a[i][j-1];}else if(a[i][j-1]>a[i-1][j]){a[i][j]+=a[i-1][j];}else{a[i][j]+=a[i-1][j];}}}cout<<a[x][y];return 0;
}

1374 - 【基础】摘花生问题(2)-东方博宜OJhttps://oj.czos.cn/p/1374

思 路 :在 上 题 的 基 础 上

进 行 改 良 输 出 路 线 即 可

代 码 :

#include<bits/stdc++.h>
using namespace std;int main()
{int a[110][110],t[110][110],b[110];int x,y;cin>>x>>y;for(int i=1;i<=x;i++){for(int j=1;j<=y;j++){cin>>a[i][j];t[i][j]=a[i][j];}}for(int i=2;i<=x;i++){a[1][i]+=a[1][i-1];}for(int i=2;i<=x;i++){a[i][1]+=a[i-1][1];}for(int i=2;i<=x;i++){for(int j=2;j<=y;j++){if(a[i][j-1]>a[i-1][j]){a[i][j]+=a[i][j-1];}else if(a[i][j-1]>a[i-1][j]){a[i][j]+=a[i-1][j];}else{a[i][j]+=a[i-1][j];}}}int k=2,i=x,j=y;b[1]=t[x][y];while(1){if(i==0&&j!=0){b[k]=t[i][j];j--;k++;}else if(j==0&&i!=0){b[k]=t[i][j];i--;k++;}else if(i!=0&&j!=0){if(a[i][j-1]>a[i-1][j]){b[k]=t[i][j-1]; j--;k++;}else {b[k]=t[i-1][j];i--;k++;}}else{break;}}for(int j=k;j>=1;j--){if(b[j]!=0){if(j!=1) cout<<b[j]<<"-";else cout<<b[j];}}return 0;
}


叁 : 贪 心

一  .  贪 心  初  步 ( 理 论 )

贪心法是从问题的某个初始解出发,采用逐步构造最优解的方法,向给定的目标前进。在每一个局部阶段,都做一个“看上去”最优的决策,并期望通过每一次所做的局部最优选择产生出一个全局最优解。做出贪心决策的依据称为“贪心策略”。要注意的是,贪心策略一旦做出,就不可再更改。与递推不同的是,贪心严格意义上说只是一种策略或方法,而不是算法。推进的每一步不是依据某一个固定的递推式,而是做一个当时“看似最佳”的贪心选择(操作),不断将问题归纳为更小的相似子问题。所以,归纳、分析、选择正确合适的贪心策略,是解决贪心问题的关键。对于一个问题,如果想用贪心法求解,首先要想到基于某种“序”或者“规则”的贪心策略。 其次还要能证明其正确性。

贪 心 的 基 本 写 法

/*https://oj.czos.cn/p/1229
*/
#include<bits/stdc++.h>
using namespace std;
int a[1010],n,x,p,k,j;
int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>x;    p=-1;for(int j=1;j<=k;j++){if(a[j]>=x){p=j;break;  }}if(p==-1){k++;a[k]=x;}else{a[p]=x;}}cout<<k;return 0;
}

二 . 贪 心 深 入 ( 习 题 )

1372 - 【基础】活动选择-东方博宜OJhttps://oj.czos.cn/p/1372

思 路 :找 到 贪 心 策 略

从 而 进 行 求 解

代 码 :

#include<bits/stdc++.h>
using namespace std;
int b[110],e[110];
int n,c;
int main()
{   cin>>n;for(int i=1;i<=n;i++){cin>>b[i]>>e[i];  }for(int i=1;i<=n-1;i++){for(int j=1;j<=n-1;j++){if(e[j]>e[j+1]){swap(e[j],e[j+1]);swap(b[j],b[j+1]);}}}int end=e[1];c=1;for(int i=2;i<=n;i++){if(b[i]>=end){c++;end=e[i];}}cout<<c;return 0;
}

1375 - 【提高】拦截导弹方案求解-东方博宜OJhttps://oj.czos.cn/p/1375

思 路 :同 上 题

代 码 :

#include<bits/stdc++.h>
using namespace std;
int n,q,k,x;
int a[1100];
int m[1100],w[1100];
int main()
{cin>>n;for(int i=1;i<=n;i++) cin>>m[i];for(int i=1;i<=n;i++){x=m[i];q=-1;for(int j=1;j<=k;j++){if(a[j]>=x){q=j;break;}}if(q==-1){k++;a[k]=x;w[i]=k;}else{    a[q]=x;w[i]=q;}}  cout<<k<<endl;for(int i=1;i<=k;i++){cout<<i<<':';for(int j=1;j<=n;j++){if(w[j]==i) cout<<m[j]<<' ';}cout<<endl;}return 0;
}



递 归 ,递 推 ,贪 心,学 习 总 结相关推荐

  1. 贪 心 学用markdown

    贪 心 算 法 区间调度 区间划分 最小延迟调度 第一次比赛 [A题 hdu1283](http://acm.hdu.edu.cn/showproblem.php?pid=1283) [B题 hdu2 ...

  2. 华科计算机复试ccf成绩,新鲜速递!刚拟录取华科学妹总结的复试攻略,快看

    原标题:新鲜速递!刚拟录取华科学妹总结的复试攻略,快看 今天给大家分享一位19考研学妹的面试经验,她报考华中科技大学,已拟录取! 复试已落幕,在火车上收到拟录取通知后,感觉自己就像一个凯旋而归的战士. ...

  3. 抖音火爆的早安推送在线版,新功能速递,支持推送时间自定义,添加生日日期计算

    抖音火爆的早安推送在线版,新功能速递,支持推送时间自定义,添加生日日期计算 传送门 问题咨询:1319723770@qq.com 新功能一:支持推送时间自定义 操作路径 消息推送列表界面,找到需要修改 ...

  4. 知乎关于王阳明心学的高赞答案。

    为了让一些把心学当成唯心的.有误解的人能停下来先放下误解,我改写了之前的开头,直接进入正题. 任何人都能看懂,不管了解不了解心学:任何人都能用得上. 哪怕消除一下知行合一是知道了就去做这种误解也好,然 ...

  5. 深度哲学:王阳明心学精髓

    如果说,在中国有且只能评出一位哲学家,那么我认为就是王阳明. 这是因为他不仅在哲学思想上造诣极深,通达了那个彼岸世界或者称之为超感性世界,而且在人生的实践之中,将其所创立的心学运用的炉火纯青,有所向披 ...

  6. 王阳明心学,功底检验二法

    关于检验学习功底的标准,特整理如下: 一.面对所谓的大人物,即权贵时,能否轻松自在,一如平常.这个大人物,我们可以设定为官员,官员都有品级,那么面对科长局长时你是什么样子,面对县长市长时是什么样子,以 ...

  7. 阳明心学的当代价值,阳明心学如何与企业管理和商业融合

    引用畅销书籍<商业归根:阳明心学的商业智慧>的序言 当今时代面临诸多机遇与挑战,传统企业转型正潮,大众创业.万众创新依热,创业成功率低的可怕,新旧经济转化正急,"新零售" ...

  8. 心学 禅宗_禅宗宣言,用于有效的代码审查

    心学 禅宗 by Jean-Charles Fabre 通过让·查尔斯·法布尔(Jean-Charles Fabre) 禅宗宣言,用于有效的代码审查 (A zen manifesto for effe ...

  9. 简 易 版 线 程 池 模 型 学 习

    简 易 版 线 程 池 模 型 学 习 1.简易版线程池流程 1.初始化线程池 1.初始化队列, 队列头, 队列尾初始化, 队列能力初始化( 队列长度),队列锁 初始化线程池条件变量,给子线程赋入口函 ...

最新文章

  1. 《C程序设计伴侣》诞生记
  2. 向IIS注册ASP.NET代码
  3. linux第一天的简单整理
  4. python装饰器是什么意思_这个python 装饰器代码是什么意思?
  5. 昂首阔步:让开发人员喜欢使用您的REST API
  6. redis springmvc mysql_redis和mysql怎么一起在springmvc里面
  7. Android Serializable与Parcelable原理与区别
  8. 电容器在电路中的作用
  9. python基础教程代码-Python基础教程代码怎么是英文 看不懂啊?
  10. 注意地方hadoop中的pi值计算
  11. 安装Python模块:pygame
  12. mysql全库备份/增量备份脚本
  13. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_07 缓冲流_3_BufferedInputStream_字节缓冲...
  14. 教你写一个弹幕库,确定不了解一下?,请查收
  15. 多角度看微积分基本定理
  16. 目标跟踪之Pysot系列代码训练(SiamRPN\SiamRPN++)
  17. 基于MATLAB霍夫变换的复杂情况下车道线检测
  18. pmp知识点(9)-项目资源管理
  19. word文件的样式如何修改?
  20. 浪潮ps9.0 oracle,浪潮ERP-PS V9.1安装手册.doc

热门文章

  1. pandas +re获取pubmed中文献的标题和摘要
  2. UVa514 Rails(铁轨)
  3. Wulihub设计文档类在线托管分享平台
  4. nodejs短信验证码,基于云之讯
  5. 高考成绩等位分查询2021,2019高考等位分查询系统
  6. c语言输入一个三位数由小到大排序,c语言程序设计练习题.doc
  7. 嵌入式学习笔记-linux应用编程和网络编程-3.2 文件属性
  8. 最常用的65条正则表达式
  9. ROS kinetic 连接实体机器人UR10(使用ur_morden_driver) catkin_make 时报错
  10. android 画图 出界,android:字符串索引出界