自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

原创 建立队列的顺序存储结构(循环队列),进行入队和出队的操作

建立队列的顺序存储结构(循环队列),进行入队和出队的操作首先我们先说一下队列的基本函数操作(c++)头文件#include<queue>建立一个队列 数据类型 变量名queue<int> q;1、检验队列是否为空empty() 堆栈为空则返回真q.empty();2、返回队首元素front() 返回队首元素int result=q.front();3、返回队尾元素back()返回队尾元素int result=q.back();4、弹出队首元素

2020-10-28 20:05:57 5961

原创 建立栈的顺序存储结构,实现输入数据(入栈操作)和输出数据(出栈操作)

建立栈的顺序存储结构,实现输入数据(入栈操作)和输出数据(出栈操作)。首先STL的栈函数stack都了解,1,(先建立栈)stacks;2,头文件#include或者是#include<bits/stdc++>3,清空栈 s.clear();4,栈的长度 s.size();5,s.push(x) 将数据x压栈。也就是放在栈顶6, s.top()返回栈顶元素的引用7,s.pop()将栈顶元素弹出。注意并不会返回栈顶元素。 所以pop往往和top合用8,s.empty()可以

2020-10-19 20:02:44 5667 3

原创 RuntimeError:Input, output and indices must be on the current device

一文看懂

2022-11-19 21:01:39 1405 2

原创 算法-贪心算法-哈夫曼编码

一,概述基本思想:以字符的使用频率作为权构建棵哈夫曼树,然后利用哈夫曼树对字符进行编码。如何构造:每次从树的集合中取出没有双亲且权值最小的两棵树作为左右子树,构造一棵新树,新树根节点的权值为其左右孩子结点权值之和,将新树插入到树的集合中。二,算法设计1.确定合适的数据结构:每个节点的权值,双亲,左孩子,右孩子,以及节点的其他信息。从叶子节点到根的路径,再求出编码。树的信息(比如节点个数)static class Node implements Comparable<Node>

2021-10-28 14:56:58 1264

原创 算法-贪心算法-最短路径

一,问题分析最短路径问题:给定一个有向带权图G=(V,E),再设其中一个点为源点,现在要计算从源到其他所有各个节点的最短路径长度(权重)。二,算法设计1.我们可以使用迪杰斯特拉算法:先求出长度最短的一条路径,参照该路径求出长度次短的路径,依次扩展节点,知道到达源节点。2.基本思想:假设源点为u,设定2个集合S和V-S,S集合中刚开始只有u一个顶点,当扩展节点寻找最短路径时,将其找到的最短路径相连的节点加入到S中,而从V-S集合中移除,并用dist[]数组记录每个顶点所对应的最短路径长度。当S中包含

2021-10-17 15:45:18 2418 1

原创 算法-贪心算法-背包问题

背包问题1.问题描述:有n个宝物,每个宝物有一定的重量w和价值v,而运载的容量有限,容量为m,(宝物可以分割),怎么才能使运走的宝物价值最大呢。2.方法:每次从剩下的宝物中选出性价比最高的宝物。3.算法设计:①数据结构与初始化:设计一个结构体,存储宝物的重量w和价值v,和性价比。 static class Three implements Comparable<Three> { Three(double w, double v) { this

2021-10-14 13:32:38 245

原创 算法--贪心算法--最优装载

贪心算法1.一个贪心算法总是做出当前最好的选择,也就是说,它期望通过局部最优选择从而得到全局最优的解决方案。2.两个特性:贪心选择性质和最优子结构性质。①贪心选择:问题的整体最优解通过一系列局部最优的选择得到.(没有回溯)②最优子结构:一个问题的最优解包含其子问题的最优解3.步骤:①先确定贪心策略,选择最好的一个方案②根据贪心策略,一步一步得到局部最优解③把所有局部最优解合成为原来问题一个全局最优解最优装载问题在容器容量固定的情况下,运用贪心算法求解最优装载问题,要求装的物品最多,先从

2021-10-13 19:14:03 1016

原创 JAVA复习-类的组合

Description设计一个点类和一一个三角形类,一个三角形由3个顶点表示。类中定义的方法能计算三角形的周长和面积,能对三角形进行平移和绕原点旋转。定义三角形类的对象并进行相应的操作。限定采用类组合的方式。Input输入多组数据。每组数据中,先是表示运算的一一个整数,1表示计算周长和面积,2表示平移,3表示顺时针旋转。如果是1,然后是三角形3个顶点的坐标,6个整数。如果是2,则是三角形3个顶点的坐标和位移量,8个整数。如果是3,则是三角形3个顶点的坐标和旋转角度(这里只有90、180、27

2021-04-26 19:49:40 958 1

原创 JAVA复习-分数运算

Description设计一个分数类,分数的分子和分母用两个整数表示,类中定义方法能对分数进行加法、减法、乘法、除法运算。定义分数类的对象并根据要求输出运算结果。Input输入不定组数的多组数据,每组中,先是表示运算的一一个整数,1表示加法,2表示减法,3表示乘法,4表示除法。再然后是两个分数的数据,4个整数,分别为第一个分数的分 子和分母,第二个分数的分子和分母。Output输出分数的分子和分母,中间用/分隔。需要最简形式。参加样例package CLASSlei;import

2021-04-26 19:45:14 850

原创 JAVA复习-矩阵运算

Description设计一个矩阵类,类中的方法能够对矩阵进行加法、减法和乘法运算。定义矩阵类对象并根据要求输出结果。Input输入多组数据,组数不定。每组中,先是表示运算的一一个整数,1表示加法,2表示减法,3表示乘法。对于加、减法,后面的数据是矩阵的行数n和列数m;如果是乘法,为n,m,k三个整数,n、m为第一一个矩阵行数和列数,m、k为第二个矩阵的行数和列数。再然后是两个矩阵的数据,全部是整数。Output每组数据运算结果矩阵,nXm或nXk矩阵。数据之间用一一个空格分隔。参加样例

2021-04-26 19:42:22 496 1

原创 JAVA复习-抽象类

Description先定义一个抽象Graphic类,有求面积的computeArea抽象方法(返回值为面积,圆周率取3.14) ;然后定义一个从Graphic派生的Circle类,有double类型的半径,以及重写的computeArea抽象方法。再定义一个从Graphic派生的Rectangle类,有double类型的长和宽属性,以及重写的computeArea抽象方法。要求main方法中至少包含如下代码(这些语句不要求必须放在一起) :Graphic g;g=new Circle® ;g

2021-04-26 19:40:29 375

原创 JAVA复习-派生类

Description先定义一个圆类Circle,有double类型的半径属性,有带参数的构造函数和求面积的computeArea方法(为保护型的,返回值为面积,圆周率取3.14) ;然后定义一一个从Circle派生的圆柱类Cylinder,增加double类型的高属性,有带参数的构造函数以及一一个 计算圆柱体积的成员函数,此函数中要用到从父类继承来的求面积方法。实现并测试这个类,在main() 函数中读入数据,然后输出体积。要求主函数中必须调用Cylinder的构造函数语句。Input第一行

2021-04-26 19:38:54 1013

原创 JAVA复习-线段类

Description设计一个二维线段类,线段用两个端点的坐标来表示(访问权限为私有),另外除了需要定义构造函数和赋值的方法外,还要定义计算线段长度的方法、对线段进行平移的方法、以原点为参照求对称的方法、以X轴为参照求对称的方法、以Y轴为参照求对称的方法。然后实现对一条线段,经过不定数量的变换后,输出其端点的坐标和线段长度(长度保留两位小数)。在main函数读入数据,定义线段类对象,调用相应的方法进行操作,进而输出正确信息。Input首先输入二二维线段的2个端点,4个整数值:x1 y1 x2

2021-04-26 19:37:16 1624 3

原创 JAVA复习-接口

Description先定义一个接口IComVolume,有一个方computeVolume,有一 个常量PI为3.14。然后定义一个实现该接口的圆柱体Cylinder类,有double类型的半径和高两个属性。再定义一一个实现该接口的长方体Block类,有double类型的长和宽、高三个属性。要求main方法中至少包含如下代码(这些语句不要求必须放在一起) :IComVolume icv;icv=new Cylinder(r,h) ;icv=new Block(a,b,C) ;icv . c

2021-04-26 19:34:44 171

原创 JAVA复习-静态域和静态方法

Description工厂生产球体,目标半径是100毫米,请根据给定数据,利用静态域和静态方法,统计产品的平均误差。要求定义一个球类,拥有一个私有浮点数据成员半径,以及带参数的构造函数,特别是有对象个数,总半径和、总误差绝对值和的静态域。在主函数中读取多组球体数据,构造多个对象,然后输出所有球体平均半径和平均误差,均为浮点数,保留2位小数。要求:必须以静态域的方式实现。当多组的时候,要有重置这些静态域为0的静态方法。Input第一行是一个整数,表示球体个数N,其后为N组数据,每一-组为球体半径。

2021-04-26 19:32:16 237

原创 JAVA复习-对象数组

Description工厂生产球体,目标半径是100毫米,请根据给定数据,利用对象数组,统计产品的平均误差。具体的,要求定义-一个球类,拥有一个私有浮点数据成员半径,以及带参数的构造函数。在主函数中构造对象数组,读取多组球体数据,构造多个对象,然后计算输出所有球体平均半径和平均误差,均为浮点数,保留2位小数。要求: main方法中,必须采用对象数组的形式。Input第一行是一个整数,表示球体个数N,其后为N组数据,每- -组为球体半径。Output输出所有球体的平均半径和平均误差,中间用"

2021-04-26 19:29:05 190

原创 算法--贪心算法--0-1背包问题

package ATanxin;import java.util.Scanner;class three{ double w;//每个宝物重量 double v;//每个宝物价值 double p;//性价比}public class B { public static int maxsize=100; public static three a[]=new three[maxsize]; public static void sorts(int

2021-04-18 15:11:48 146

原创 算法--贪心算法--最优装载

package ATanxin;import java.lang.reflect.Array;import java.util.Arrays;import java.util.Scanner;public class A { //加勒比海盗 贪心算法 public static void main(String [] args){ Scanner input=new Scanner(System.in); System.out.println("

2021-04-18 15:09:36 110

原创 创建一个有向图,并输出各个节点的出度和入度(邻接矩阵存储)

#include <bits/stdc++.h>using namespace std;#define MAX 100typedef struct Arcell{ int adj;//权重}Arcell,AdjMatrix[MAX][MAX];//邻接矩阵typedef struct MGraph{//图的结构 char vex[MAX];//点数组 AdjMatrix arc;//边 int Vexnum,Arcnum;//点数目,边数目}MGraph;int

2020-12-25 14:17:44 3955

原创 给你一个无向图,输出它各个节点的度(邻接矩阵存储)

#include <bits/stdc++.h>using namespace std;#define MAX 100typedef struct Arcell{ int adj;//权重}Arcell,AdjMatrix[MAX][MAX];typedef struct MGraph{ char vex[MAX];//点的数组 AdjMatrix arc;//边 int Vexnum,Arcnum;//顶点数,边数}MGraph;//构建图int Loca

2020-12-25 13:02:09 2909

原创 双向链表基本操作

#include<bits/stdc++.h>using namespace std;typedef struct DulNode{ int data; struct DulNode *prior,*next;}DulNode,*DuLinkList;bool InitDuList_L(DuLinkList &L){ L=new DulNode; if(!L){ return false; } L->pri

2020-12-24 22:16:42 132

原创 创建一个单链表,并实现查找,取值,删除,插入等基本操作

#include <iostream>using namespace std;typedef struct LNode{ int data;//数据域 struct LNode * next;//指针域} LNode,*LinkList;//*LinkList为指向结构体LNode的指针类型bool InitList_L(LinkList &L){// L=new LNode; if(!L){ return false;

2020-12-24 22:01:33 3393 2

原创 创建一个顺序表,并实现查找,删除,插入,输出等操作

#include <iostream>using namespace std;#define Maxsize 100typedef struct{ int *elem; int length;//长度} SqList;bool InitList(SqList &L){//构造一个空的顺序表 L.elem=new int[Maxsize]; if(!L.elem){ return false; } L.length=

2020-12-24 21:47:08 2645

原创 求最短路径-----迪杰斯特拉算法

3),迪杰斯特拉算法(解决单源最短路径)基本思想:每次找到离源点(如1号结点)最近的一个顶点,然后以该顶点为中心进行扩展,最终得到源点到其余所有点的最短路径。基本步骤:1,设置标记数组book[]:将所有的顶点分为两部分,已知最短路径的顶点集合P和未知最短路径的顶点集合Q,很显然最开始集合P只有源点一个顶点。book[i]为1表示在集合P中;2,设置最短路径数组dst[]并不断更新:初始状态下,令dst[i] = edge[s]i,很显然此时dst[s]=0,book[s]=1。此时,在集合Q中可选择

2020-12-13 14:44:25 483

原创 求最短路径——DFS+Floyd算法

1),深度或广度优先搜索算法(解决单源最短路径)从起始结点开始访问所有的深度遍历路径或广度优先路径,则到达终点结点的路径有多条,取其中路径权值最短的一条则为最短路径。2),弗洛伊德算法(解决多源最短路径):时间复杂度O(n3),空间复杂度O(n2)基本思想:最开始只允许经过1号顶点进行中转,接下来只允许经过1号和2号顶点进行中转…允许经过1~n号所有顶点进行中转,来不断动态更新任意两点之间的最短路程。即求从i号顶点到j号顶点只经过前k号点的最短路程。分析如下:1,首先构建邻接矩阵Floyd[n+1]

2020-12-13 14:40:55 1191

原创 全排序算法(选择,冒泡,快速,插入)

详解全在代码里:#include<bits/stdc++.h>using namespace std;int a[10005];int n;/*在一个长度为N的无序数组中,第一趟遍历N个数据,找出其中最小的数值与第一个元素交换;第二趟遍历剩下的N-1个数据,找出其中最小的数值与第二个元素交换……第N-1趟遍历剩下的2个数据,找出其中最小的数值与第N-1个元素交换,至此选择排序完成。*/void choicesort(int a[],int n)//选择排序{ for

2020-12-10 16:15:39 205

原创 二叉树前序中序后序递归遍历

1,二叉树建立2,二叉树遍历3,二叉树输出(详细说明在代码里)ps:怕有些小伙伴看不懂对于输入的数字怎么建立二叉树的,所以我花了个图因为一直是先建立左子树在建立右子树,所以一直左边走,碰到0就代表这个是叶子节点了,就回溯。#include<bits/stdc++.h>using namespace std;typedef int TelemType;//整型变量typedef struct BinaryTreeNode{ TelemType data; st

2020-12-08 16:24:26 105

原创 邻接表存储的无向图DFS BFS 和判断是否两点之间有一条路径

1.采用邻接表或邻接矩阵作存储结构。   2.键盘输入节点个数、名称、边。   3.输出对应的邻接表或邻接矩阵。   4.输出二个遍历结果。   5.利用遍历算法判断图中的两个顶点之间是否存在路径。#include<bits/stdc++.h>using namespace std;#define MAX_NUM 20 typedef struct ArcNode { //表节点 int adjvex; //邻接点 struct ArcNo

2020-12-08 16:13:44 1971 2

原创 Xor Sum

问题Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Zeus 发起M次询问,每次询问中包含一个正整数 S ,之后 Zeus 需要在集合当中找出一个正整数 K ,使得 K 与 S 的异或结果最大。Prometheus 为了让 Zeus 看到人类的伟大,随即同意 Zeus 可以向人类求助。你能证明人类的智慧么?Input输入包含若干组测试数据,每组测试数据包含若干行。输入的第一行是一个整数T(T &

2020-12-06 16:07:34 153

原创 Soilers(士兵站队问题)

N soldiers of the land Gridland are randomly scattered around the country.A position in Gridland is given by a pair (x,y) of integer coordinates. Soldiers can move - in one move, one soldier can go one unit up, down, left or right (hence, he can change ei

2020-11-29 14:49:29 492

原创 最大连续子序列

给定K个整数的序列{ N1, N2, …, NK },其任意连续子序列可表示为{ Ni, Ni+1, …,Nj },其中 1 <= i <= j <= K。最大连续子序列是所有连续子序列中元素和最大的一个,例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和为20。在今年的数据结构考卷中,要求编写程序得到最大和,现在增加一个要求,即还需要输出该子序列的第一个和最后一个元素。Input测试输入包含若干测试用例,

2020-11-29 14:24:03 1324

原创 计算字符串变成回文串的最小交换次数

A palindrome is a string of symbols that is equal to itself when reversed. Given an input string, not necessarily a palindrome, compute the number of swaps necessary to transform the string into a palindrome. By swap we mean reversing the order of two adja

2020-11-25 15:11:51 1138

原创 Leetcode-括号的分数

给定一个平衡括号字符串 S,按下述规则计算该字符串的分数:() 得 1 分。AB 得 A + B 分,其中 A 和 B 是平衡括号字符串。(A) 得 2 * A 分,其中 A 是平衡括号字符串。示例 1:输入: “()”输出: 1示例 2:输入: “(())”输出: 2示例 3:输入: “()()”输出: 2示例 4:输入: “(()(()))”输出: 6来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/score-of

2020-11-24 16:45:46 261

原创 Huffman编码的实现

Description由键盘输入一组整数,作为权值序列,求赫夫曼编码并输出。Input输入为两行数据,第一行是一个整数,作为输入权值的个数(<=10),第二行为权值序列。Output输出为权值序列对应的赫夫曼编码,每个编码输出一行Sample Input44 3 2 1Sample Output4:03:102:1101:111#include<bits/stdc++.h>using namespace std;#define MIN 0x7fffffff

2020-11-23 15:14:53 745

原创 Leetcode-反转每对括号间的字符串

给出一个字符串 s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中 不应 包含任何括号。示例 1:输入:s = “(abcd)”输出:“dcba”示例 2:输入:s = “(u(love)i)”输出:“iloveu”示例 3:输入:s = “(ed(et(oc))el)”输出:“leetcode”来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/rever

2020-11-22 11:15:35 1947

原创 Leetcode-找丑数

有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数。注意,不是必须有这些素因子,而是必须不包含其他的素因子。例如,前几个数按顺序应该是 1,3,5,7,9,15,21。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/get-kth-magic-number-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。ps:刚开始这道题放在了queue里,然后我自作聪明用了queue,把每一个q.front()*3 *5

2020-11-21 17:38:40 156

原创 Leetcode-单词搜索(回溯+dfs)

Leetcode-单词搜索(回溯+dfs)给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, 返回 true给定 word = “SEE”, 返回 true给定 word

2020-11-07 15:40:22 213

原创 Leetcode-剪绳子

给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]k[1]…*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 3

2020-11-03 20:53:05 151

原创 Leetcode-“二分查找”-爱吃香蕉的珂珂

Leetcode-"二分查找”-爱吃香蕉的珂珂描述:珂珂喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。珂珂可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。返回她可以在 H 小时内吃掉所有香蕉的最小速度 K(K 为整数)。示例 1:输入: piles

2020-10-30 16:02:00 345

原创 快速排序

基本思路:从待排得数据序列中任取一个数据(如第一个数据)作为分界值,所有比它小的数据元素一律放到左边,所有比他大的数据元素一律放到右边,这样经过一趟下来,该序列形成左右两个子序列,左边序列中数据元素的值都比分界值小,右边序列中数据元素的值都比分界值大。一趟快速排序的算法是:第一步:设置两个变量i、j,排序开始的时候i=0, j=N(数组的最大索引号) ;第二步:以第一个数组元素作为关键数据,赋值给X,即X=A [0] ;第三步:从j开始向前搜索,即由后开始向前搜索(j=j-1) ,找到第一个小于X的

2020-10-29 20:50:54 105

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除