数据结构与算法笔记
想很赚比的小星在摩拳擦掌
转码选手
展开
-
力扣冲刺冲刺
小白刷题记录-大二下70爬楼梯(易)假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?看了一会,思考一个大方向。发现好像可以递归(这里想无论遇到什么题都应该思考一下大方向,或者说常见的算法分类),思考了一下递归出口,写了。超时,寄!图样图森破sometimesnaive。递归和dp好像存在某种联系,去查了一下,这个解释很好的解释了这道题。class Solution { public int climbStairs(int原创 2022-02-26 20:41:54 · 287 阅读 · 0 评论 -
动规、贪心
#include<stdio.h>const int MAXN = 12000;int n, a[MAXN + 1], dp[MAXN + 1];int MAX=1;int longestNum(){ dp[1] = 1; for (int i = 2; i <= n; i++) { int flag=0; int max=dp[1]; for(int j=1;j<i;j++) //add something here for computing dp[i..原创 2021-06-06 16:52:14 · 225 阅读 · 2 评论 -
凹入表打印、多叉树转二叉树遍历
```c```c#include<stdio.h>#include<stdlib.h>#include<iostream>using namespace std;const int nmax=100;int f[nmax+1];int s[nmax+1][nmax+1];int tot;char a[nmax];int GetDepth(int x){ if(!s[x][0])//如果x号父亲没有儿子了 return 1; //pl..原创 2021-05-25 20:06:25 · 698 阅读 · 1 评论 -
数据结构与算法之归并排序与快速排序
归并排序代码及思路:#include<stdio.h>const int maxn=1000001;int A[maxn];//归并排序的基本思路(子循环过程):将序列分成两半,分别排序,再合并,重复此过程//从最小的单元合并到最大的单元,排序完成 void merge(int arr[], int left, int middle, int right){//合并函数,借用两个数组实将一个两半分别为有序序列的数组合并为一个有序数组 int i, j; int n1=midd原创 2021-04-20 09:41:48 · 100 阅读 · 0 评论 -
数据结构与算法之排序代码
#include<iostream>using namespace std;int main(){ int n; int temp; cin >> n; int a[100]; for (int i = 0; i < n; i++) { cin >> a[i]; } for (int i = 0; i < n-1; i++) { for (int j = i + 1; j < n; j++) { if (a[j原创 2021-03-31 12:46:01 · 118 阅读 · 0 评论 -
数据结构与算法之串&&KMP算法
串的简单理解就是字符串串一般装在数组里char a[],常用gets(str)和puts(str)进行操作。注意用getchar()读换行符好像没啥东西,实验课最难的一题还是上一节的循环队列,溜了溜了,更新上一篇去了。...原创 2021-03-28 19:11:36 · 114 阅读 · 0 评论 -
数据结构与算法之栈、队列、递归思想、判断出栈顺序的合法性
数据结构与算法第二节课内容的复习与总结栈:限定在表尾进行插入/删除的线性表。(FILO)数据结构特点:先进后出(子弹弹匣)小结论:如果进栈的顺序是123…则出栈的顺序不能是312结构的(三个数(不一定要连在一起)最大的在左边最小的在中间第二大的在右边)这是一个充要条件。用数组的形式按照栈的数据结构存放数据,return -1并没有实际意义,只是作为判断值进行后续的操作。出栈要使用指针形式。递归在操作系统内部的实现就是利用栈的原理。递归的两个案例:经典的汉诺塔问题:这里的AB代表的塔不是原创 2021-03-21 08:15:54 · 392 阅读 · 0 评论 -
数据结构与算法之对于链表数据结构的理解
因为自己是个nt所以要做保姆级别的笔记以后才能看懂建立链表的两种方法:尾插法:非循环部分的理解顺序:首先定义三个链表节点指针变量,头尾p:LNode *head,*tail,*p;因为一开始只打算设置一个空结点,所以既是头又是尾,要给他开辟空间:head = tail = (LNode *)malloc(sizeof(Lnode));tail的next属性要初始化所以先指向空:tail->next=NULL;循环部分的理解顺序:p作为要插入的结点需要先开辟空间p=(LNode *)mallo原创 2021-03-14 16:02:23 · 290 阅读 · 0 评论