【算法】递归(recursion)+经典例题个人分析
定义(个人理解)
1.自己调用比自己小一个规模的自己。
2.有结束条件。
3.对问题的细化。
ps: 大家可以通过这个效应感性的感受一下递归。
德罗斯特效应:
************************************************************************************************************************************************
递归条件
经典例题(个人分析)
阶乘
汉诺塔问题
3.看下面动图~
八皇后问题
#include <iostream>
using namespace std;
int c[20],n=8,cnt=0;
void print(){ //打印for(int i=0;i<n;++i){for(int j=0;j<n;++j){if(j==c[i])cout<<"1 ";else cout<<"0 ";}cout<<endl;}cout<<endl;
}
void search(int r){if(r==n){ //当已经排到最后一个皇后的时候位置一定固定。【条件2】print();++cnt;return;}for(int i=0;i<n;++i){ //r表示第几行c[r]=i; //c[r]=i,表示第r行第i列int ok=1;for(int j=0;j<r;++j)if(c[r]==c[j]||r-j==c[r]-c[j]||r-j==c[j]-c[r]){ //判断是否在同一列,是否在主对角线或副对角线上【条件1】ok=0;break;}if(ok)search(r+1); //r+1必定不在同一行,故不用判断是否在一行}
}
int main(){search(0);cout<<cnt<<endl;return 0;
}
运行结果部分截屏:
【算法】递归(recursion)+经典例题个人分析相关推荐
- [算法系列] 深入递归本质+经典例题解析——如何逐步生成, 以此类推,步步为营
[算法系列] 深入递归本质+经典例题解析--如何逐步生成, 以此类推,步步为营 本文是递归系列的第三篇, 第一篇介绍了递归的形式以及递归设计方法(迭代改递归),;第二篇以递归为引子, 详细介绍了快排和 ...
- 【算法基础】经典例题说递归
目录 [算法基础]经典例题说递归 递归简介 递归的适用范围 递归的基本思路 经典例题解析 移梵塔 题目描述 题目分析 题解 九连环 题目描述 题目分析 题解 更新日志 [算法基础]经典例题说递归 递归 ...
- 古老的密码(Ancient Cipher,UVa1339)(算法竞赛入门经典 例题4-1)C++
题目:给定两个不超过100的字符串,判断是否可以做到将其中一个字符串通过重排和映射的操作,使得两个字符串相同.例如,JWPUDJSTVP重排后可以得到WJDUPSJPVT,然后每个字母只要通过一次映射 ...
- C语言递归及经典例题详解
什么是递归? 什么时候使用递归 例题1 顺序打印问题 例题2 求n的阶乘 例题3 求第n个斐波那契数 经典 汉诺塔问题 经典 青蛙跳台阶问题 什么是递归? 递归就是程序调用自身的编程技巧.递归通常把一 ...
- 算法竞赛入门经典 例题6-2 铁轨(C、python)
同个人网站 https://www.serendipper-x.cn/,欢迎访问 ! 问题描述: 某城市有一个火车站,铁轨铺设如图所示.有n节车厢从A方向驶入车站,按进站顺序编号为 1~n .你的任务 ...
- 总结 贪心算法_用经典例题轻松帮你搞定贪心算法
转自:奶糖猫 贪心算法概念叙述 运用贪心算法求解问题时,会将问题分为若干个子问题,可以将其想象成俄罗斯套娃,利用贪心的原则从内向外依次求出当前子问题的最优解,也就是该算法不会直接从整体考虑问题,而是想 ...
- 算法竞赛入门经典 例题6-6 小球下落(python、C)
同个人网站 https://www.serendipper-x.cn/,欢迎访问 ! 问题描述: 有一颗二叉树,最大深度为D,且所有叶子的深度都相同.所有结点从上到下从左到右编号为 1,2,3,- , ...
- 算法竞赛入门经典 例题6-21
UVa506 System Dependencies 编写程序实现类似Linux下的软件包管理器,其工作方式为: 可以通过命令显式安装组件,这个过程也可能隐式安装依赖组件 如果没有其它组件仍然依赖一个 ...
- 算法竞赛入门经典 例题6-16
刷题荒废了一个多月,今日了却一件事情,把此题补上! UVa10129 Play on Words 有若干个圆盘,每个圆盘上都有一个单词,判断这些圆盘是否能排成一排,使得相邻圆盘的首尾字母相同. 3年前 ...
最新文章
- ubuntu18下配置VS Code
- 转行python经验_【经验分享】转行如何自学Python并且找到工作,分享自己心得
- linux下c语言按q退出_Linux C编程之一:Linux下C语言的开发环境
- 别人给你网盘分享东西怎么搞到电脑上看呢?
- NYOJ 300 hdu 2276 Kiki Little Kiki 2 (矩阵快速幂)
- [转载]:合并两个已排序好的int数组,并排序返回c#实现
- python操作access数据库未发现数据源名称_ASP连接ACCESS数据库失败,提示“未发现数据源名称并且未指定默认驱动程序”...
- 深入解析hostname
- 支持多浏览器的js拖拽 (转domkey0303 的blog)
- UBUNTU中更改文件的打开方式
- 【POJ2318】TOYS(点在凸多边形内判定---模版暴力/二分)
- 准银河字母、当铺密码、摩斯电码详解
- 梯度和法向量的统一理解
- 中病毒了文件夹变exe文件找到方法
- 计算机研究生论文怎怎么写,计算机硕士研究生论文大纲格式 计算机硕士研究生论文大纲怎样写...
- 2019-10 前端技术汇总
- 使用ViewPager实现轮播图自动播放
- JavaScript补环境及AST实战
- 专题五 在Cisco Packet Tracer中设计基于 PT 和 OneNet 的智能家居系统
- JAVA计算机毕业设计上虞烟草物流配送系统(附源码、数据库)