
算法
Otto_1027
The best way to not feel hopeless is to get up and do something.
展开
-
C/C++用宏定义简化for循环
记录一下for循环简化#define _for(i,a,b) for( int i=(a); i<(b); ++i)这样for(int i=0;i<10;i++)就简化为了_for(i, 0, 10)原创 2020-10-24 21:08:37 · 2145 阅读 · 2 评论 -
2021王道数据结构——线性表课后大题_1
线性表的顺序表示课后大题——P19–P21有几个必须掌握的算法归并排序P19.7P20.11用空间换时间——有n个元素就开一个大小为n的数组P20.12P21.13离散数学中的P19.8P20.10全部代码如下,代码中已给出题目#include <cstdio>#include <iostream>#include <algorithm>using namespace std;#define MAX 30#define _for(原创 2020-10-29 20:01:32 · 670 阅读 · 0 评论 -
王道数据结构 线性表 链式存储小结
1.单链表头插法图解:待插入的next指向头结点原本指向的结点修改头结点的next指向待插入结点插入完毕代码实现//设带插入结点为SS->next=head->next;head->next=S;尾插法图解将待插入结点的next域设为NULL将最后一个结点的next域指向带插入结点插入完毕代码实现//设插入结点为Shead->next=S;head=S;在中间插入图解将待插入结点的next域指向插入结点位置的前驱结原创 2021-01-16 21:40:04 · 261 阅读 · 0 评论 -
堆排序实现C++
时间复杂度:O(nlogn)空间复杂度:O(1)#include <iostream>#include <stack>#include <queue>#include <vector>#include <string>using namespace std;//堆的存储一般用数组来实现。//假如父节点的数组下标为i的话,那么其左右节点的下标分别为:(2*i + 1)和(2*i + 2)。//完全二叉树中,假如有n个元素,那么在原创 2022-03-29 11:46:18 · 1381 阅读 · 0 评论 -
2021版王道数据结构课后代码题全部实现
历时3个多月,把21版王道数据结构的课后代码题全部实现了一遍,一共96道题文件目录结构:编程环境:Visual Studio 2019编程语言:C/C++其中,每道题都是一个独立的cpp文件,可以独立运行。在树和图的章节,会有输入样例和对应的示例图。cpp文件结构建立要求的数据结构题目说明题目要求的代码运行示例以树章节的题目示例:#include <iostream>#include <stack>#include <queue>原创 2021-03-16 10:17:58 · 9470 阅读 · 9 评论 -
图的邻接表表示转换成邻接矩阵
算法思想:先初始化邻接矩阵。依次遍历各个顶点的边表,根据边表中记录的“改弧所指向的顶点的位置”修改邻接矩阵arc[i][j]的值。例如遍历第 i 行的时候(当前的顶点所在行数为 i ),依次遍历该顶点的边表结点,若当前顶点的弧顶点的位置为j,则arc[i][j] = 1创建如下的图:全部代码如下:#include <iostream>using namespace std;#pragma region 创建邻接表存储的无向图#define MaxVertexNum 100原创 2021-02-18 21:41:11 · 5449 阅读 · 1 评论 -
算法期末复习
用思维导图整理了一下算法的基本知识 算法概述 递归与分治策略 动态规划 贪心算法 回溯法 分支限界法 PDF文件(内有超链接)参考资料:算法中的P问题、NP问题、NP完全问题和NP难问题分治法之棋盘覆盖问题排序之归并排序教你彻底学会动态规划——入门篇矩阵连乘最小生成树的两种方法(Kruskal算法和Prim算法)循环赛日程表(分治法)最后推荐一个算法可视化的网站VisuAlgo...原创 2020-12-19 19:04:34 · 623 阅读 · 1 评论 -
操作系统先进先出置换算法(FIFO)实现
先进先出置换算法(FIFO):每次选择淘汰的页面是最早进入内存的页面实现方法:把调入内存的页面根据调入的先后顺序排成一个队列,需要换出页面时选择队头页面即可。队列的最大长度取决于系统为进程分配了多少个内存块代码如下:#include <iostream>#include<stdlib.h>//#include<conio.h>#include<stdio.h>#define size 4using namespace std;typedef原创 2020-11-19 14:40:28 · 6948 阅读 · 1 评论 -
【操作系统】使用C/C++实现进程调度算法
使用C/C++实现进程调度算法1 先来先服务调度算法2 优先级调度算法3 短作业(或进程)优先调度算法4 响应比高优先调度算法测试数据:id reachtime dotime privilege1 70 20 12 80 10 33 85 20 44 90 5 2代码:#define _CRT_SECURE_NO_WARNINGS //解决VS报错#include<stdio.h>#include<stdlib.h>//#include<co原创 2020-11-19 12:12:57 · 3514 阅读 · 1 评论 -
LeetCode 131. Palindrome Partitioning
Given a string s, partition s such that every substring of the partition is a palindrome.Return all possible palindrome partitioning of s.Example:Input: “aab”Output:[[“aa”,“b”],[“a”,“a”,“b”]]题目链接可以回溯法切割出来字串,然后判断是否为回文串由于要找出来全部的字串,所有回溯的范围应该是全部遍历一遍原创 2020-11-12 15:19:39 · 132 阅读 · 3 评论 -
LeetCode 47 Permutations II
Given a collection of numbers, nums, that might contain duplicates, return all possible unique permutations in any order.Example 1:Input: nums = [1,1,2]Output:[[1,1,2],[1,2,1],[2,1,1]]Example 2:Input: nums = [1,2,3]Output: [[1,2,3],[1,3,2],[2,1,3]原创 2020-11-12 10:19:49 · 129 阅读 · 0 评论 -
LeetCode 46. Permutations
Given a collection of distinct integers, return all possible permutations.Example:Input: [1,2,3]Output:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]46.全排列看了看大佬们的讲解,终于自己做出来一道回溯的题。回溯大致分为三步:终止条件:回溯到什么情况就可以加入答案列表剪枝条件:什么情况下就可以停止回溯直接continue原创 2020-11-12 09:39:28 · 163 阅读 · 0 评论 -
斐波那契数列 C/C++
用三种方法实现:带备忘录的递归dp迭代迭代优化,空间复杂度为O(1)#include <cstdio>#include <iostream>#include <vector>using namespace std;#define _for(i,a,b) for(int i=(a);i<=(b);i++)//备忘录int helper(vector<int>& memo, int n) { //base case i原创 2020-10-29 20:48:55 · 172 阅读 · 0 评论