- 博客(15)
- 收藏
- 关注
原创 蓝桥杯真题-地宫取宝
方法一:暴力dfs深搜,但是这种方法超时,但是想法比较简单。#include<iostream>using namespace std;int arr[51][51];bool haven[51][51];int times = 0;int dx[2] = { 1,0 };int dy[2] = { 0,1 };int n, m, k;bool better(int u){ for (int i = 1; i <= n; i++) {
2022-03-06 12:38:00
405
原创 蓝桥杯试题--K-进制数
原题链接:K-进制数解题思路:当我们看到这题时,可能可以想到很多办法,对我而言先想到的是我在概率论学到的知识。例如7位十进制数 x1 x2 x3 x4 x5 x6 x7根据题意,第一位数不可能是0,所以x1的选取可以有K-1种。那么后面的几位都遵循一个原则:当你的前一位是0时,你只有K-1种选择,当你的前一位不是0,你有K种选择(包括0)。所以这就成为了一个递归的点。如图,比如第二项不为0,为1,那么下一位就有K种选择。0的下一位就只有K-1种选择。注意事项:当某
2022-03-02 21:50:14
119
原创 蓝桥杯试题--九宫重排
题目概述方法一 单向bfs九宫重排问题就是典型的广度优先搜索问题,最初我的想法是利用单向的广度优先搜索实现,利用set来查重,通过广度优先搜索保证所需的步骤是最快的(关键点)。但是问题是单向的bfs速度上较慢,我在某些oj上运行不能通过,所以去查资料,发现还可以使用第二种方法。方法二 双向bfs单向虽然可以,但是速度比双向慢。因为随着递归的深度变深,每走一步要尝试更多种走法,双向bfs利用的就是两边同时走,在方向不同但是图案相同的点相遇。借用别人的图来说明一下代码如...
2022-03-01 15:10:53
765
1
原创 CSAPP拆弹实验/炸弹实验
最近在学深入理解计算机系统这本书,第三章的实验是拆弹实验,所以记录一下。拆弹实验总的来说不是很难,主要是要会运用gdb来查看汇编代码和寄存器。常用的指令:break 设置断点,接函数名或者*地址x 查看地址中的数据,后面可以接/c(数据为字符串),/d(数据为数字)disas 查看当前函数的汇编代码i r 查看寄存器的值stepi n 运行n步(会进入别的函数)nexti n 运行n部(跳过别的函数,只在当前函数)其他的可以百度找到,炸弹实验用这几个足够了。每个人的炸
2021-12-22 11:32:20
5996
1
原创 二叉搜索树的层次遍历和先序、中序、后序遍历
这是一颗二叉搜索树,可以按层次遍历和按先序、中序、后序遍历。源码#include<iostream>using namespace std;#include<queue>struct Node{ int data; Node* left; Node* right; };Node* getnewNode(int n){ Node* temp; temp = new Nod...
2021-07-22 10:46:58
524
原创 深入浅出检查括号匹配性(栈)(C++)
1)检查括号匹配性若有字符串为"({}<>)({})"则符合匹配性(一个正括一定有一个反括号,嵌套在括号中的括号也必须进行判断)2)不符合匹配性的情况“><(}{)["不符合匹配性(先出现反括号再出现正括号,或嵌套在正括号种存在不匹配的括号等)3)思路例如 "( { })"第一个字符是 '(' ,所以压入栈,此时栈不为空。第二个字符是 '{' ,所以再次压入栈。第三个字符是 '}' ,栈不为空,所以弹出栈的第一个元素 '{'。第四个字符是.
2021-07-16 17:46:15
579
4
原创 C++使用链表实现栈
栈的特点:1.压入栈时压在最上面2.弹出栈时弹出最上面源码:#include<iostream>using namespace std;struct Node{ int data; Node* next;};class stack{public: Node* head; int len; //结点数public: //先实例化头节点 stack() { head = new Node; head->next = NULL; len
2021-07-16 15:02:14
1231
2
原创 C++面向对象方式建立链表以及相关操作
最近在看b站上一个视频,学习数据结构,了解链表后发现所有的视频都不是面向对象方式,然后就好奇,面向对象应该如何实现链表,是否会更方便。1.运行结果1)首先插入6个元素2)删除结点3)打印删除后的链表4)反转链表2.源码#include<iostream>using namespace std;struct Node{ int data; Node* next;};class list{public: Node* head; //头节点地址...
2021-07-16 11:57:21
653
原创 C++进行链表操作(创建,插入,反转,打印,删除)
相比于数组,链表有很多方便的地方,并且在数据结构这门课中会频繁出现,所以十分重要。每一个结点有data部分和指针部分,把它们一个接一个连接起来就形成了链表。相对于数组,链表的长度可以一开始不确定,并且data部分可以有多种类型,例如同时有char类型和int类型。...
2021-07-15 11:59:43
1074
原创 C++文件操作write()以及read()写入和读取类对象
1.write() 函数的参数第一个参数是char*类型的,所以我们在写入数据时需要类型转换,第二个参数是字节大小(可以理解为写入数据的长度)。2.正确的调用方式这里的person是一个类,因为要写入person类temp的数据,传入的第一个参数是temp的首地址(有点类似于数组,指针在写入的时候移动),第二个参数就是person的字节。3.read()参数和方法都类似于write(),这两个函数都是文件读写中方便对一串数据(而不是一个一个字符)进行读写,不同的场合应该用不同的方法,不一
2021-07-01 21:00:42
5903
1
原创 C++实现传递闭包(Warshall算法)
1.流程图2.代码执行过程未运行时的该程序的文件目录,只有一个文本文件(initialfile)该程序文件目录下的写有初始矩阵的文本文件程序运行后在该文件目录下生成了一个新的文本文件(resultfile)新的文本文件(resultfile)写有Warshall算法处理后的传递闭包矩阵3.程序源码#include<iostream>using namespace std;#include<fstream>#define
2021-07-01 20:27:20
1708
3
原创 C++实现图书管理系统(文件操作与类)
#include<iostream>using namespace std;#include<fstream>#define filename "booklist.txt"#include<list>#include<cstring>#include<iomanip>class Book //创建Book类,存放图书信息{public: Book(string na=" ", int p=0, int n=0)...
2021-06-10 19:44:28
2652
保研资料、导师联系模板、文书模板
2024-03-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人