数据结构
小金鱼随心记
这个作者很懒,什么都没留下…
展开
-
《leetcode198.打家劫舍》解题思路
如果只有1个房屋,那么不用考虑,直接偷这唯一一个就行。假如有2个房屋,金额表示如下所示:【1,2】那么就得偷第二个房屋,才能获得最高金额。假如有3个房屋,金额表示如下所示:【1,2,3】那么就得...原创 2022-03-10 13:15:41 · 1145 阅读 · 0 评论 -
栈(ebp)
运行环境:VC++6.0esp为堆栈指针,栈顶由esp寄存器来定位。压栈的操作使栈顶的地址减小,弹出的操作使栈顶的地址增大。ebp是32位的bp,是基址指针。#include<stdio.h>void print(){ // 填充代码 unsigned int _ebp; // 插入一条汇编指令,读取ebp __asm mov _ebp,ebp int *p =(int*)(*(int*)_ebp-4-4-4-7*4); for(int i=0;i <7;i++){原创 2021-05-16 15:19:02 · 285 阅读 · 0 评论 -
回溯法求解0/1背包问题
问题描述:装入背包中物品重量和恰好为W解法一#include<stdio.h>#define MAXN 20 // 最多物品数// 问题表示int n = 4; // 4种物品int W = 6; // 限制重量为6int w[] = {0, 5, 3, 2, 1}; // 存放4个物品重量,不用下标0元素int v[] = {0, 4, 4, 3, 1}原创 2021-05-14 15:06:43 · 446 阅读 · 0 评论 -
回溯法求全排列
问题描述:有一个含n个整数的数组a,所有元素均不相同,求其所有元素的全排列。例如,a[] = {1,2,3}#include<stdio.h>void swap(int &x, int &y){ // 交换x,y int tmp = x; x = y; y = tmp;}void dispasolution(int a[], int n){ // 输出一个解 printf("("); for(int原创 2021-05-14 10:50:35 · 535 阅读 · 0 评论 -
回溯法(2)
问题描述:设计一个算法在1、2、…、9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。#include<stdio.h>#define N 9void fun(char op[], int sum, int prevadd, int a[], int i){ if(i == N){ // 扫描完所有位置 if(sum == 100){ // 找到一个解原创 2021-05-13 21:54:38 · 205 阅读 · 1 评论 -
回溯法求幂集
#include<stdio.h>#include<string.h>#define MAXN 100void dispasolution(int a[], int n, int x[]){ // 输出一个解 printf("{"); for(int i = 0; i < n; i++){ if(x[i] == 1) printf("%d",a[i]); } printf("}");}voi原创 2021-05-12 18:54:00 · 540 阅读 · 0 评论 -
迪杰斯特拉算法实现(C++)及用例测试
描述:如上图所示,求出北京到各个顶点的最短路径。代码实现:#include <stdio.h>#include <vector>#define INF 99999999 // 路径的最大值using namespace std;vector<int> Dijkstra(vector<vector<int>> &graph, int start){ int n = graph.size(); // 存储图中的顶原创 2021-04-20 16:35:50 · 861 阅读 · 1 评论 -
分治法求一棵二叉树的高度
问题描述:假设二叉树采用二叉链存储结构进行存储,设计一个算法采用分治法求一棵二叉树的高度。#include <stdio.h>#include <stdlib.h>#define max(x,y) ((x)>(y) ? (x):(y))typedef struct BiTNode{ char data; struct BiTNode *Lchild, *Rchild;}BiTnode,*BiTree;// create Binary TreeBi原创 2021-04-07 19:53:44 · 3165 阅读 · 0 评论 -
C语言实现:编写递归算法,在二叉树中求位于先序序列中第k个位置的结点的值。
题目:编写递归算法,在二叉树中求位于先序序列中第k个位置的结点的值。描述:核心代码为Fink_K()函数块内容。关键:Fink_K()函数的形参需要设置一个int型指针。#include <stdio.h>#include <stdlib.h>#include <stdbool.h>typedef struct BiTNode{ char data; struct BiTNode *Lchild, *Rchild;}BiTNode,*BiT原创 2020-05-25 21:35:04 · 5664 阅读 · 5 评论 -
KMP算法
KMP算法KMP算法学习视频「天勤公开课」KMP算法易懂版天勤考研数据结构:KMP算法懒猫老师-数据结构-(15)KMP算法2-next数组KMP算法程序实例如下语言:C/C++编译运行环境:Visual Studio 2019Code:blocks#include <iostream>#include <stdlib.h>#...原创 2020-04-18 11:21:18 · 353 阅读 · 0 评论