![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
come_across
这个作者很懒,什么都没留下…
展开
-
递归-N皇后
递归概述: 1.自身调用自身。 2.有明确的终止条件。 3.无需考虑程序运行过程,默认程序可以按照逻辑执行。 示例如下: N皇后问题描述:输入一个正整数N,要求N个皇后摆在国际象棋的N*N的棋盘上,要求N个皇后互相不能进攻,要求输出所有的摆放方式(同行,同列,同对角线都可以进攻)。 问题分析: 1.首先该问题为标准递归问题,需要明确的终止条件,及第N个皇后摆放好后return。 2...原创 2019-05-21 10:15:00 · 100 阅读 · 0 评论 -
DFS-全排列
#include "iostream" #include "main.h" using namespace std; int n; int visited[1000]; //标记当前节点是否被访问 int Data[1000]; int main() { int ncase; freopen("input.txt", "r", ...原创 2019-05-21 10:22:27 · 92 阅读 · 0 评论 -
递归--将问题分解为更小规模的子问题求解
将问题分解为更小规模的子问题求解 例:爬楼梯 人每次可以走一个台阶,或者两个台阶,输入楼梯的级数,去不同的走法。 n级台阶的走法 = (先一级后,n-1级台阶的走法)+(先两级后,n-2级台阶的走法) 用函数表达式表示为 f(n) = f(n-1)+f(n-2) 边界条件:n=0 return 1;n<0 return 0; 代码如下 int sum; int stairs...原创 2019-05-21 15:31:42 · 1046 阅读 · 0 评论 -
排序算法
1插入排序 描述: 1.将数组a从左到右插入数值。 2.将数组下标为k∈(1,size-1)的数值作为最左侧待排序的元素。 3.遍历数组下标为j∈(0-k-1)的元素,若存在大于a[k]的值,则将a[k]的值赋值给a[j],并将下标为j到k-1的元素全部后移一位。 void InsertSort(int a[],int size) { for (int i = 1; i <...原创 2019-05-21 17:33:12 · 100 阅读 · 0 评论 -
二分查找
二分查找 概述:二分查找是对有序数列,每次都将数据范围减小一般的查找。 时间复杂度:log(n) #include "iostream" using namespace std; //注意:输入的数组必须是有序的。升序 int BinarySearch(int a[],int size,int p) { int start = 0; int mid; int en...原创 2019-05-21 18:08:02 · 123 阅读 · 0 评论 -
分治算法
1分治算法-快速排序 快速排序是一种利用分治的思想,由递归来实现的排序算法。 1.1实现思想: (1)对数组进行排序,设变量k=a[0],然后将k移动到适当的位置,使得“比k小的元素都在k的左侧,比k大的元素都在k的右侧”。 (2)把k左侧的元素进行快速排序。 (3)把k右侧的元素进行快速排序。 1.2代码实现 #include<iostream> using name...原创 2019-05-29 23:13:13 · 147 阅读 · 0 评论