
数据结构与算法刷题
数据结构与算法刷题代码与思路整理
Laura_Wangzx
生活或许可以平淡,但生命绝不能平庸❤️
展开
-
Fibonacci数列的DP演算法java代码(暴力法、Top-down、Bottom-up)
Fibonacci数列的DP演算法(暴力法、Top-down、Bottom-up)package leetcode_practise;public class Fibonacci_DP { // 方法一:迭代暴力 public static int fib_recursive(int N) { if (N == 1 || N == 2) return 1; else // 存在大量重复计算原创 2022-02-21 22:43:42 · 320 阅读 · 0 评论 -
钢条切割问题(Java)——Bottom-up DP演算法
Rod Cutting题目:注意:本题采用txt文件读入,屏幕输出;如果需要屏幕读入屏幕输出,可以留言或者自己改代码~Bottom-up DP演算法:因为Top-down DP演算法有很多重复的计算,因此进一步改进Top-down DP演算法得到Bottom-up DP演算法。在第一次计算中把分割结果以及最大利润的结果记录下来,下次需要用到的时候直接调用,节省时间。——所需时间T=...原创 2018-12-05 21:56:14 · 1129 阅读 · 0 评论 -
钢条切割问题——(暴力法(Brute force), Top-down DP演算法,Bottom-up DP演算法)对比
注意:以下是三合一的代码,如果只想要:暴力法(Brute force):https://blog.youkuaiyun.com/qq_37486501/article/details/84844197Top-down DP演算法:https://blog.youkuaiyun.com/qq_37486501/article/details/84844222Bottom-up DP演算法:https://blo...原创 2018-12-05 22:05:39 · 1676 阅读 · 0 评论 -
b-tree和b*tree和b+tree
转https://blog.youkuaiyun.com/zhangliangzi/article/details/51367639B树(B-Tree,并不是B“减”树,横杠为连接符,容易被误导)是一种多路搜索树(并不是二叉的): 1.定义任意非叶子结点最多只有M个儿子;且M>2; 2.根结点的儿子数为[2, M]; 3.除根结点以外的非叶子结点的儿子数为[M/2, M];...转载 2019-01-10 03:33:27 · 227 阅读 · 0 评论 -
排序——简单选择排序
排序——简单选择排序#include <iostream>#include <stdio.h>using namespace std;void swap(int *a,int *b)//该函数用于交换两个变量的值{ int temp=*a; *a=*b; *b=temp;}int ScanForMin(int a[],int be...原创 2018-07-06 21:03:20 · 209 阅读 · 0 评论 -
数据结构的类型定义
线性表:typedef int ElemType;//元素类型typedef struct node{ElemType data;struct node *next;}LNode,*LinkList;栈#define MAX 100 //栈的最大值typedef struct { ElemType base[MAX];int top;}SqStack; 队列...原创 2018-06-10 10:25:05 · 9480 阅读 · 0 评论 -
钢条切割问题(Java)——Top-down DP演算法
Rod Cutting题目:注意:本题采用txt文件读入,屏幕输出;如果需要屏幕读入屏幕输出,可以留言或者自己改代码~Top-down DP演算法: 从钢条的左边切割下一段长度为i的短钢条,然后右边为长度即为n-i的短钢条,进一步对右边继续递归求解,直到右边的长度为0,则返回零。——所需时间T=O( n^2)import java.io.BufferedReader;imp...原创 2018-12-05 21:54:01 · 957 阅读 · 0 评论 -
钢条切割问题(Java)——暴力法(Brute force)
Rod Cutting题目:注意:本题采用txt文件读入,屏幕输出;如果需要屏幕读入屏幕输出,可以留言或者自己改代码~说明:暴力法(Brute force): 列出每种切割方案,比较哪种切割方案利润最大,——所需时间T=O(2^n )import java.io.BufferedReader;import java.io.FileNotFoundException;impo...原创 2018-12-05 21:51:38 · 1177 阅读 · 1 评论 -
各种Sort Function排序方法的O()
各种Sort Function排序方法的O():Sort Function好 O()坏O()in place?##运用Comparision-based sorting:Insertion Sortnn^2in placeMerge Sortnlognnot in placeHeap Sortnlognin placeQui...原创 2018-11-05 11:18:15 · 602 阅读 · 0 评论 -
学生成绩管理系统C++
#include <iostream>#include <cmath>#include <cstring>#include <string.h>#include <stdlib.h>typedef long long ll;typedef long long LL;using namespace std;/********...原创 2018-07-09 17:04:24 · 4069 阅读 · 0 评论 -
有向图拓扑排序
#include &lt;iostream&gt;#include&lt;stdlib.h&gt;using namespace std;#define num 100typedef string VerTexType;typedef struct ArcNode{ int adjvex; struct ArcNode *nextarc;}ArcNode;...原创 2018-06-20 12:22:51 · 282 阅读 · 0 评论 -
无向图非递归的深度优先非递归遍历
#include &lt;iostream&gt;#define Max 100#include &lt;string&gt;bool visited[Max];typedef int ElemType;using namespace std;typedef struct ArcNode{ int adjvex; struct ArcNode *nextarc;...原创 2018-06-20 12:22:01 · 2705 阅读 · 1 评论 -
无向图的广度遍历非递归
#include &amp;lt;iostream&amp;gt;#define Max 100#include &amp;lt;string&amp;gt;bool visited[Max];typedef int ElemType;using namespace std;typedef struct ArcNode{ int adjvex; struct ArcNode *nextarc;}...原创 2018-06-20 12:20:53 · 705 阅读 · 0 评论 -
图的深度优先遍历代码递归
实现图的深度遍历,如下图: #include &amp;amp;amp;amp;lt;iostream&amp;amp;amp;amp;gt;#include &amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;gt;//注意#include &amp;amp;amp;amp;lt;stdlib.h&amp;amp;amp;amp;gt;//注意using name原创 2018-06-18 13:59:13 · 7455 阅读 · 0 评论 -
图的邻接表的建立, 求入出度 (注:图的创建时,直接输入字符和定点之间关系)
设计算法实现: 1.建立有向邻接表 2.求有向图的入度,出度,度 3.输出图(图的遍历) (注:图的创建时,直接输入字符和定点之间关系)#include &amp;amp;lt;iostream&amp;amp;gt;#include &amp;amp;lt;stdio.h&amp;amp;gt;//注意#include &amp;amp;lt;stdlib.h&amp;amp;gt;//注意原创 2018-06-18 12:24:18 · 1950 阅读 · 0 评论 -
中序线索二叉树
#include<iostream>#include<stdio.h>#include<math.h>using namespace std;#define MAXQSIZE 100typedef char ElemType;// 线索存储标志位// Link(0):表示指向左右孩子的指针// Thread(1):表示指向前驱后继的线索...原创 2018-06-02 13:02:18 · 258 阅读 · 0 评论 -
二叉树的层次遍历-C++语言
二叉树的层次遍历-C语言#include<iostream>#include<stdio.h>#include<math.h>using namespace std;#define MAXQSIZE 100typedef struct BiNode{ int data; struct BiNode *lchild,*rchild...原创 2018-06-02 12:05:01 · 7610 阅读 · 3 评论 -
数据结构-栈(实现表达式求值算法)的代码
数据结构——栈(实现表达式求值算法)1.利用栈实现表达式求值算法#define MaxSize 100//符号栈struct{ char data[MaxSize]; int top;}op;//数值栈struct{ float data[MaxSize]; int top;}st;//将算术表达式exp转换为后缀表达式postexpvo...原创 2018-05-01 23:12:46 · 6940 阅读 · 0 评论 -
数据结构-队列的基本代码
数据结构——队列1.顺序存储来定义循环队列结构。编程实现,初始化队列、判队列为空、出队列、入队列、求队列头部元素等运算 2.利用队列打印杨辉三角形。杨辉三角形是形如: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 的三角形,其实质是二项式(a+b)的n次方展开后各项的系数排成的三角形,它的特点是左右两边全是1,从第...原创 2018-05-01 23:09:37 · 2166 阅读 · 0 评论 -
数据结构——栈(顺序栈,链栈)的基本代码
数据结构——栈(顺序栈,链栈)1.采用顺序存储实现栈的初始化、判栈为空、入栈、求栈顶元素、出栈实现、将任意一个十进制整数转化为R进制整数操作。 2.采用链式存储实现栈的初始化、判栈为空、入栈、求栈顶元素、出栈操作。#include <iostream>#include <stdio.h>#include <stdlib.h>using nam...原创 2018-05-01 23:06:06 · 1688 阅读 · 0 评论 -
链表排序
链表排序代码#include <iostream>typedef struct node{ int data; struct node *next;}*LinkList,LNode;void Init(LinkList &L)//带头节点{ L=(LinkList)malloc(sizeof(LNode)); L->nex...原创 2018-04-12 23:27:00 · 146 阅读 · 0 评论 -
迷宫求解C++
#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <algorithm>#include <math.h>typedef long long ll;using namespace std;#de...原创 2018-07-09 17:07:14 · 969 阅读 · 0 评论 -
拓扑排序
#include <iostream>#include <algorithm>#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <string.h>#include <map&原创 2018-07-09 17:08:18 · 170 阅读 · 0 评论 -
二叉树排序树的操作
/************************************************* 五、查找、排序、文件 1、【二叉排序树与文件操作】 功能要求: (1)从键盘输入一组学生记录建立二叉排序树; (2)二叉排序树存盘; (3)由文件恢复内存的二叉排序树; (4)中序遍历二叉排序树; (5)求二叉排序树深度; (6)求二叉排序树的所有节点数和叶子节点数; (7)...原创 2018-07-09 17:10:39 · 886 阅读 · 0 评论 -
股票盈利问题(Java)——分治法(Maximum-subarray)
题目注意:1.本题采用txt文件读入,屏幕输出;如果需要屏幕读入屏幕输出,可以留言或者自己改代码~2.下面分int类型和double类型的数据读入,请选择适合自己的…分治法(Maximum-subarray)代码如下:要求(输入数据为int类型)import java.io.BufferedReader;import java.io.FileNotFoundExcep...原创 2018-10-10 17:16:31 · 1656 阅读 · 1 评论 -
股票盈利问题(Java)——暴力法(Brute force)
题目如下:注意:1.本题采用txt文件读入,屏幕输出;如果需要屏幕读入屏幕输出,可以留言或者自己改代码~2.下面分int类型和double类型的数据读入,请选择适合自己的…暴力法(Brute force)代码如下:要求(输入数据为int类型)import java.io.BufferedReader;import java.io.FileNotFoundExcepti...原创 2018-10-10 17:13:25 · 857 阅读 · 0 评论 -
有序表的折半查找
有序表的折半查找 #include <iostream>using namespace std;typedef struct{ int r[100]; int length;}table;int create(table &t){ int a; t.length=0; cin>>a; while(a!...原创 2018-07-07 01:40:09 · 2931 阅读 · 0 评论 -
二叉排序树的插入算法和删除某一节点算法
二叉排序树的插入和删除某一节点 #include <iostream>using namespace std;typedef int KeyType;typedef int InfoType;typedef struct{ KeyType key; InfoType otherinfo;}ElemType;typedef struct BSTNode...原创 2018-07-07 01:38:44 · 3677 阅读 · 1 评论 -
散列表外拉链法处理冲突
散列表线性探测法外拉链法#include &amp;lt;iostream&amp;gt;#include &amp;lt;algorithm&amp;gt;using namespace std;struct Node{ int key; Node *next;};Node HashTable[13];int a[13];int InsertHT(int x,int w){ i...原创 2018-07-07 01:35:45 · 821 阅读 · 0 评论 -
散列函数线性探测法处理冲突
散列函数线性探测法处理冲突: #include &amp;lt;iostream&amp;gt;using namespace std;typedef int KeyType;typedef int InfoType;struct done{ KeyType key; InfoType otherinfo;}HT[20];int a[15];void InsertHT(int...原创 2018-07-07 01:34:39 · 3371 阅读 · 0 评论 -
排序——直接插入排序
排序——直接插入排序//// main.cpp// PAIXU//// Created by 李奕昕 on 2018/6/26.// Copyright © 2018 李奕昕. All rights reserved.//#include &amp;lt;iostream&amp;gt;using namespace std;void InSort(int a[],int c)...原创 2018-07-06 21:02:04 · 216 阅读 · 0 评论 -
排序——冒泡排序
排序——冒泡排序#include <iostream>using namespace std;void BubbleSort(int a[],int c){ for(int i=0;i<c;i++)// 比较n-1次 { int t=0; for(int j=0;j<c-1;j++) { ...原创 2018-07-06 21:01:18 · 443 阅读 · 0 评论 -
排序——希尔排序
排序——希尔排序#include <iostream>using namespace std;void shell_sort(int array[], int length){ int i; int j; int k; int gap; //gap是分组的步长 int temp; //希尔排序是在直接插入排序的基础上实现的...原创 2018-07-06 21:00:21 · 219 阅读 · 0 评论 -
排序——快速排序
排序——快速排序#include <iostream>using namespace std;//快速排序实现#include "stdio.h"#include "stdlib.h"void quick_sort(int s[],int l,int r){ if(l < r) { int i=l,j=r,x=s[l]; ...原创 2018-07-06 20:59:31 · 388 阅读 · 0 评论 -
排序——堆排序
堆排序代码#include <iostream>using namespace std;#include <stdio.h>#include <stdlib.h>//堆调整,构建大顶堆,arr[]是待调整的数组,i是待调整的数组//元素的位置,length是数组的长度void HeapAdjust(int arr[], int i, int l...原创 2018-07-06 20:58:36 · 163 阅读 · 0 评论 -
KMP字符串匹配代码
#include <iostream>#include <stdio.h>//注意#include <stdlib.h>//注意#include <string.h>using namespace std;string T;string pat;void getNext(int next[],int lengthP){//length...原创 2018-07-06 07:32:58 · 290 阅读 · 0 评论 -
链表操作总结
链表操作总结(创建,遍历,就地逆置,删除偶数结点…)1、随机产生或键盘输入一组元素,建立一个带头结点的单向链表(无序)。 2、遍历单向链表(显示)。 3、把单向链表中元素逆置(不允许申请新的结点空间)。 4、在单向链表中删除所有的偶数元素(值为偶数)结点。 5、编写在非递减有序链表中插入一个元素使链表元素仍有序的函数,并利用该函数建立一个非递减有序单向链表。 6、利用算法5...原创 2018-04-03 21:28:36 · 2387 阅读 · 2 评论