
c++语言
痛快最重要
计算机小白
展开
-
双向链表下的简单迭代器实现
这次的数据结构实验要求用链表的迭代器实现线性表的反向输出。就打算用个双向的链表,这样输出就比较简单了。原创 2017-12-03 11:07:44 · 1379 阅读 · 0 评论 -
计算机图形学实验(三) 梁友栋-Barskey线段裁剪和多边形裁剪算法实现
梁友栋-Barskey裁剪算法直接上代码吧:// ConsoleApplication2.cpp: 定义控制台应用程序的入口点。//#include "stdafx.h"#include<gl/GLUT.H>#include<cmath>#include<iostream>#include"node.h"using namespace std;...原创 2019-05-07 20:39:51 · 3887 阅读 · 1 评论 -
DFS的实现(邻接链表的图)
直接上代码:void linkedDgraph1::DFS_VISIT(linkedDgraph1 &G1,int u){ time += 1; dTime[u] = G1.dTime[u]=time; color[u] = GRAY; graphNode<int> *p = Adj[u].first(); while (p != NULL) { int...原创 2019-05-11 21:05:48 · 1042 阅读 · 0 评论 -
局部替换算法最小生成树
算法描述: 从T=NULL开始 for (图中的每条边e) if(加入e不构成环,则T=T+e) else e'是环上权重最大的边,T=T+e-e‘算法实现 可以看出上述的算法的关键之处就在于判断图中是否存在环以及找到环中最大的边。判断是否有环: 用dfs深度优先搜索,如果搜索过程中发现一个点u的邻接点v是灰色的,则说明...原创 2019-05-17 08:49:55 · 659 阅读 · 0 评论 -
算法实验四:寻找加权有向图中的一个负环
题目描述:给定一个有向图,图中边的权重有正有负,设图中存在若干负环,设计算法找到一个负环。思路描述:利用bellman_ford的方法先判断有没有环,如果有环,保存这条能relax的边,然后通过他的前驱点往前遍历,并将这些边保存到一个数组里,在过程中先判断是否出现了此点,如果出现说明找到环,这个点以及后面的点都是这个环中的点,否则继续加入数组中。算法实现:bool linke...原创 2019-05-24 10:42:04 · 1655 阅读 · 0 评论 -
动态规划求解TSP圈
求解思路: 动态规划的方法的最大难点就在于初始变量的确定,选择合适的初始变量才能更好的运用动态规划的方式解决问题。我在这里定义的变量就是d(i,S),设s出发点,其中i是一个点,而S是点的集合,这个变量的意思就是从i出发,经过S中的所有点一次且仅一次且回到出发点s的最小距离。当S为空时,就表示i到起始点s的权值。所以有如下的动态规划方程: d(i,S)=...原创 2019-05-31 10:51:03 · 863 阅读 · 0 评论 -
最长的公共前缀
题目描述:来源:https://leetcode-cn.com/problems/longest-common-prefix/编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。解决思路: 这个题目比较简单,可以以第一个字符串为标准,每次比较其他字符串的每个字符是否和第一个字符串的对应位置的字符相同,如果不相同,则结束,返回前面都相同的...原创 2019-07-08 14:42:10 · 333 阅读 · 0 评论 -
实现strStr()
题目描述:来源:https://leetcode-cn.com/problems/implement-strstr/给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。解决思路: 依次扫描haystack字符串,其下标为i,当有一个字符和needle的第...原创 2019-07-09 22:59:47 · 233 阅读 · 0 评论 -
搜索插入位置
题目描述:来源(https://leetcode-cn.com/problems/search-insert-position/)给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。法一:其实这个题的思路很简单,最常规的做法就是一个个的判断,只要数组中的值大于等于target时就可以...原创 2019-07-14 20:45:10 · 178 阅读 · 0 评论 -
无重复字符的最长子串
题目描述:来源:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/solution/给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。第一种解法:暴力解法(c++) 思路比较简单,从字符串的某一个字符开始扫描,并将扫描的结果加入到一个数组中,后面的字符判断是...原创 2019-07-05 17:19:52 · 141 阅读 · 0 评论 -
括号对的生成
题目描述:来源:https://leetcode-cn.com/problems/generate-parentheses/解决方法:回溯法(c++实现) 主要思路利用这个问题的隐含的条件,在括号生成的任何时刻左括号的数量总是大于等于右括号的数量,先判断左括号的数量是否加到最大了,如果没有就继续记啊左括号,如果最大了开始加右括号,直到总的括号数为n的2倍。当一一种方法加完后,就...原创 2019-07-06 19:20:27 · 419 阅读 · 0 评论 -
计算机图形学实验(二)多边形填充
多边形填充图形学实验中有着填充多边形的实验,在这里实现了一种相对简单的方法。主要步骤:从最下边往上边开始扫描,也就是y不断增加,求出与多边形的交点,根据交点每两个点分为一组,并画出这两点之间的点,进行填充。(扫描线与每条线段会出现一个交点,两条线段的交点处按照两个点进行计算,实际上并没有画)直到扫描到最上面的部分结束。主要代码:// ScanLine.cpp: 定义控制台应用程序...原创 2019-05-07 20:20:48 · 5187 阅读 · 0 评论 -
力扣:237:删除链表中的节点
今天遇到一道题,比较有意思:初看时觉得没什么,就从链表中删除指定的元素就行了,遍历一下,改个指针就好了,不过进一步看时发现好像不太对,他没有给我链表,只给了我要删除的节点,这是怎么回事,怪我太年轻,还以为他给的有问题,后面看了别人的评论才明白过来,也是自己的固定思维没有想到。解法:相当于你知道你要删除的节点,顺着这个节点,你可以找到后面的所有节点,但是前面的节点你没办法找到,但是前面的节点...原创 2019-05-09 17:02:19 · 458 阅读 · 0 评论 -
计算机图形学实验(一) Bresenham画直线和中点画圆法画圆
图形学的第一个实验,因为老师课上的讲解原因,所以这里将一个边长为1的正方形块作为一个像素,放大后可以看出来。先上代码,画线的:void drawLine(node * mnode){ glClearColor(0.0f, 0.0f, 0.0f,0.0f);//绘图颜色为黑色 glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 1....原创 2019-05-06 16:49:19 · 3995 阅读 · 0 评论 -
旋转Treap的简单实现
Treap=Tree+HeapTreap是一棵二叉搜索树,它的左子树和右子树分别是一个Treap,和一般的二叉搜索树不同的是,Treap结构中每个节点x有两个域,一个是其关键字值key,一个是优先级数priority(他是一个独立选取的随机数),对于Treap结构,其关键字遵循二叉搜索树性质,其优先级遵循堆性质。但是这里要注意的是Treap和二叉堆有一点不同,就是二叉堆必须是完全二叉树,而Tr...原创 2018-05-13 09:59:30 · 602 阅读 · 0 评论 -
基于拓扑排序的排课程序
一、题目描述某学院有n门课程,(i,j)表示课程i是课程j的先行课,及课程i必须在课程j的之前的学期开设。对任意给出的仙子那个课解s={(1,3),(2,4),(3,5),(4,6),(3,7),…},至少需要安排多少个学期?给出每个学期的课程清单。二、程序思路分析题目能清楚地发现此题与拓扑排序有很大的关系,拓扑排序的层数就是学期数,每个学期的课程就是每一层的点。所以只需要在拓扑排序的...原创 2018-06-10 09:43:15 · 2741 阅读 · 1 评论 -
社区医院选址问题
问题描述n个社区之间的交通图用有向加权图表示,先要从这n个社区中选择一个社区建立一所医院,问这所医院应建在那个社区,能使所有的社区都离这家医院比较近(能使离医院最远的社区到医院最近)或能使所有的社区达到医院的距离之和达到最小。问题分析关键就是要使所有的社区到达医院的距离之和最小。有两种办法,一种是直接运用弗罗伊得算法,求出任意两点之间的最短路径在求和。还有一种就是对每个点用dijk...原创 2018-06-10 10:22:31 · 4979 阅读 · 2 评论 -
csp考试 20150301 图像旋转 c++实现
题目:这道题本来也不难,只是找好对应关系就好了,但我一开始谢谢了代码提交之后一直只有50分,并告诉我运行错误,然后我百思不得齐解啊,这到底是为什么?后面才发现好像是数组的容量的问题,数组太大时就会出错,然后百度找了一下解决的办法。发现是因为在main函数里是临时变量,太大的数组声明不了,得用全局变量,原文链接如下:C语言中使用内存较大的二维数组出错的解决办法然后修改了自己的代码就好了代...原创 2018-10-09 19:28:07 · 665 阅读 · 0 评论 -
MFC实现简单的聊天功能
设计目标:2.设计二 简单的即时通信软件(6学时实验)目的与要求: 利用WinSock进行点对点通信,工作机制模仿即时通信软件的基本功能,登陆,上线,传递信息等等。分为客户部分和服务器部分两块,客户部分类似一般通信软件例如QQ,服务器部分主要提供客户端用户基本数据配置。服务端代码:#include <WinSock2.h>#include <stdio.h&...原创 2018-11-13 15:22:48 · 3047 阅读 · 3 评论 -
编译原理之词法分析(Pl/0语言文法)
文法:Pl/0语言文法的BNF表示:〈程序〉→〈分程序〉.〈分程序〉→ [<常量说明部分>][<变量说明部分>][<过程说明部分>]〈语句〉<常量说明部分> → CONST<常量定义>{ ,<常量定义>};<常量定义> → <标识符>=<无符号整数><无符...原创 2018-11-13 15:36:19 · 4648 阅读 · 1 评论 -
编译原理之语法分析(自顶向下递归下降法 Pl/0语言文法 打印语法树)
先调用词法分析程序后将单词保存到一个全局的字符串数组result中,并声明全局int变量ip,指向当前的单词下标,然后调用程序函数,即可完成一步步的递归,最后分析出能否规约为一颗语法树。下面的代码是语法分析部分:/函数声明void subProgram();void conExplain();void varExplain();void processExplain();...原创 2018-11-28 13:32:55 · 6349 阅读 · 10 评论 -
编译原理之目标代码生成
所有的源码:https://github.com/yanguojun123/Compile先上代码:(其余后面完善)#pragma once#include<iostream>#include<string>#include <fstream>#include <sstream>#include<Windows.h...原创 2018-12-18 19:39:14 · 9456 阅读 · 1 评论 -
c++ delete指针时 报错堆损坏 HEAP CORRUPTION DETECTED
今天写代码发现释放指针后,总是报堆损坏的错误,百度了发现并没有出现对应的数组越界的情况,后面检查才发现自己的代码里犯了一个很致命的错误:在一个返回类型为指针的函数里返回了函数体里申请的局部变量,导致返回后指针已被释放,所以导致后面的指针释放错误,以后一定更加小心。解决方法则是增加了一个指针类型的参数,直接修改了内容,将函数返回类型改成了void。之前的代码:node* Bez...原创 2019-04-22 22:08:09 · 2061 阅读 · 0 评论 -
算法实验(二)寻找无向图的衔接点
图G的衔接点是指图G中的一个节点,删除该节点将导致图不连通。分为两部分:1.如果是根节点,则判断其是否有两个子节点(DFS树中,不是原始的图中)及以上,如果是则为衔接点。2.不是根节点,如果词典有一个子节点s,且没有任何从节点s或任何s的后代节点指向v的真祖先的后向边判断第二点我们根据一个low值来判断。 v.low=min(v.d,w.d)//(u,w)是节点v...原创 2019-05-05 11:16:43 · 603 阅读 · 0 评论 -
特殊等价字符串组
记录一下一道有意思的题目:来源:https://leetcode-cn.com/problems/groups-of-special-equivalent-strings/这个题目的意思通俗点说就是一个字符串的奇数位上的字符可以相互替换,偶数位上的字符也可以相互替换。但是奇数位和偶数位的不能换,这样换任意次后两个字符串相同的话就是同一组的,然后要求出现在一共有多少组。思路:将...原创 2019-08-06 20:18:38 · 444 阅读 · 0 评论