自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 个人博客迁移

后续的文章会发在博客里,有问题也可以通过博客里的邮箱联系,很少看csdn信息了。个人博客:https://133nson.github.io。

2023-04-07 01:37:21 112

原创 pwnable_hacknote_WP

pwnable_hacknote_WP文章目录pwnable_hacknote_WP检查保护分析ELFAdd noteDelete notePrint note利用思路exp检查保护​ i386架构,RELRO半开,开了Canary和NX,没开PIE。分析ELF先跑一下类似菜单的程序,有增、删、查的操作。IDA反编译后发现主函数主要就是根据选项选择菜单内相应功能的作用,若输入范围之外的数字则会出现错误提示并重新选择。(因为主函数逻辑不是很复杂所以这里就不贴反编译出来的代码了)Add no

2022-03-01 20:00:57 730 1

原创 VNCTF2022_Pwn_clear_got_WP

VNCTF2022_Pwn_clear_got_WP文章目录VNCTF2022_Pwn_clear_got_WP检查文件IDA查看题给elf文件利用思路exp检查文件RELRO半开,没有canary,开NX,没开PIE。IDA查看题给elf文件int __cdecl main(int argc, const char **argv, const char **envp){ char buf[92]; // [rsp+0h] [rbp-60h] BYREF int v5; // [rsp

2022-02-14 02:30:48 722 1

原创 SCTF2021_Pwn_dataleak_WP

SCTF2021_dataleak_WP文章目录SCTF2021_dataleak_WP检查文件和保护ida查看ELF文件cJSON_PWNida查看libcjson.so利用思路exploit检查文件和保护64位小端序,动态链接。relro半开,没开canary,开了PIE和NX。ida查看ELF文件cJSON_PWNint __cdecl __noreturn main(int argc, const char **argv, const char **envp){ int i; //

2021-12-27 12:41:16 615

原创 POJ3126 Prime Path

Prime Path描述:The ministers of the cabinet were quite upset by the message from the Chief of Security stating that they would all have to change the four-digit room numbers on their offices.— It is a matter of security to change such things every now and

2021-10-11 16:57:25 158

原创 百练2757 最长上升子序列(两种动规方法)

最长上升子序列描述:一个数的序列bi,当b1 < b2 < … < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, …, aN),我们可以得到一些上升的子序列(ai1, ai2, …, aiK),这里1 <= i1 < i2 < … < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中最长的长度是4,比如子序列(1, 3, 5, 8

2021-10-06 14:06:45 116

原创 EOJ1224 简单迷宫问题

简单迷宫问题问题描述:一天,sunny 不小心进入了一个迷宫,不仅很难寻找出路,而且有的地方还有怪物,但是 sunny 有足够的能力杀死怪物,但是需要一定的时间,但是 sunny 想早一点走出迷宫,所以请你帮助他计算出最少的时间走出迷宫,输出这个最少时间。我们规定每走一格需要时间单位 1, 杀死怪物也需要时间 1, 如果不能走到出口,则输出 impossible. 每次走只能是上下左右 4 个方向。输入:每次首先2个数n, m(0 < n, m <= 200),代表迷宫的高和宽,然后n行

2021-10-02 16:27:07 223

原创 HDUOJ2648 Shopping

Shopping问题描述:每个女孩都喜欢购物,蒲公英也是。现在她发现,由于春节即将来临,这家商店每天都在涨价。她喜欢一家叫做“记忆”的商店。现在她想知道这家商店的价格在每天变化后的排名。输入:一行数字n(n<=10000)表示商店的数量。然后n行,每行包含一个字符串(长度小于31,仅包含小写字母和大写字母。)代表店铺名称。然后用一行数字m(1<=m<=50)表示天数。然后m个零件,每个零件有n行,每行有一个数字s和一个字符串p,代表这一天,商店p的价格增加了s。输出:包含m行

2021-09-30 09:44:27 151

原创 HDUOJ1062 文本反写

文本反写问题描述:伊格纳修斯喜欢用相反的方式写单词。给定伊格纳修斯写的单行文字,您应该反转所有单词,然后输出它们思路:用栈来存储每一个单词,依次将每一个单词的每一个字符压入栈中,若读到单词的末尾则将元素依次出栈并准备读取下一个单词#include <bits/stdc++.h>using namespace std;int main(){ int n; char ch; scanf("%d", &n); // 读入测试案例总数 g

2021-09-27 17:47:55 140

原创 HDUOJ4841圆桌问题

圆桌问题问题描述:圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即处死该人;然后从被处死的人之后开始数数,再将数到的第m个人处死……依此方法不断处死围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在处死n个人之后,圆桌上围坐的剩余的n个人全是好人。思路:用vector模拟动态变化的圆桌,赶走n个人之后留下的都是好人#include <bits/stdc++.h>using namespace std;int ma

2021-09-27 16:10:50 256

原创 用单链表将两个一元多项式相加

将两个一元多项式相加问题描述:要求用链表表示一元多项式,并实现算法求两个多项式的和。#include <iostream>using namespace std;struct polyNode{ double coef; // 表示底数 int exp; // 表示指数 polyNode* next;};polyNode* createPoly();void dispPoly(polyNode*);polyNode* addPoly

2021-09-20 23:14:26 1563

原创 构造3个循环单链表

构造3个循环单链表问题描述:已知l为指向循环单链表中头节点的指针,每个节点的数据域都存放一个字符,该字符可能是英文字母字符、数字字符或其他字符。实现算法,根据该单链表构造3个带头节点的循环单链表——a, b, c, 使得每个循环单链表只含有同一类字符。#include <iostream>using namespace std;typedef struct node{ char data; node* next;} listNode, *linkList;

2021-09-16 11:40:34 265

原创 分解一个循环单链表尾两个循环单链表

分解一个循环单链表尾两个循环单链表问题描述:已知一个带头节点的循环单链表中的数据元素含有正数和负数,试实现一个算法,创建两个循环单链表,使一个循环单链表中只含非负数数,另一个循环单链表中只含负数。分析:初始时,先创建两个空的单链表a和b, 然后依次查看指针p指向节点的元素值,如果值为非负数,则将其插入a中;否则,将其插入b中。最后,使最后一个节点的指针域指向头节点,构成循环单链表。#include <iostream>using namespace std;typedef st

2021-09-16 10:29:27 397

原创 出单链表中倒数第k个位置上的节点

找出单链表中倒数第k个位置上的节点问题描述:已知一个带头节点的单链表,节点结构为{int data, node* next}, 假设该链表只给出了头指针list, 在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的节点。若查找成功,输出该节点的data域元素值,并返回1;否则,返回0.分析:定义两个指针变量p和q, 初始时均指向首节点(头节点的下一个节点)。先让p沿着链表向后移动,并用计数器cnt进行计数,当p指向第k个节点(即k == cnt)时,使q从第一个节点开始与

2021-09-15 17:05:25 313

原创 合并两个链表

合并两个链表已知两个单链表a和b, 其中的元素都是非递减排列的,实现算法将a和b合并成一个有序递减的单链表c(值相同的元素只保留一个), 并要求利用原单链表的节点空间。分析:利用头插法建立单链表,时先插入的元素值小的节点在单链表末尾,后插入的元素值大的节点在单链表开头。#include <iostream>using namespace std;typedef struct node{ int data; node* next;} listNode, *li

2021-09-15 15:02:16 902

原创 求两个单链表的差集

求两个单链表的差集问题描述:利用单链表的基本运算求a-b. 即如果单链表a中出现的元素,在b中也出现,则删除a中的该元素。#include <iostream>using namespace std;typedef struct node{ int data; node* next;} listNode, *linkList;void sortList(linkList);listNode* append(listNode*, int);listNod

2021-09-15 10:54:50 1742

原创 逆置单链表

逆置单链表问题描述:实现算法,将一个单链表逆置。(将一个单链表中的所有节点按照逆序存放)分析:将一个单链表逆置其实就是用头插法建立单链表。定义一个空链表,分别将元单链表中的第一个节点、第二个节点一直到第n个节点插入新单链表的头部,即插入的节点成为新单链表的第一个节点。// 假设链表节点的数据域包含学号、姓名、地址#include <iostream>#include <string>using namespace std;struct node{ in

2021-09-14 17:09:13 2484

原创 单链表及其简单应用

单链表及其应用为了便于实现插入、删除等操作,在单链表的第一个节点之前增加一个节点,称为头节点。头节点的数据域可以存放如单链表的长度等信息,头节点的指针域存放第一个节点的地址信息,使其指向第一个节点。(若带头节点的单链表为空链表,则头节点的指针域为空)储存结构typedef struct node{ int data; node* next;}listNode, *linkList;其中,listNode是单链表的节点类型,linkList是指向单链表节点的指针类型。基本运算

2021-09-14 12:10:12 605

原创 求两个等长升序元素序列的中位数

求两个等长升序元素序列的中位数问题描述:设有一个长度为l(l >= 1)的升序序列s, 位于序列中位置为(l / 2)的元素称为s的中位数。例如,如果有序列s1 = {21, 23, 25, 27, 29}, 则25为s1的中位数。对于两个元素序列,其中位数为两个元素序列中元素合并在一起后的中位数,如果s2 = {12, 14, 16, 18, 30}, 则s1和s2的中位数是21。要求设计一个时间和空间尽可能高效的算法,求两个升序序列a和b的中位数。分析:分别求两个升序序列a和b的中位数,记

2021-09-13 19:02:10 634

原创 求两个任意长度的整数之和

求两个任意长度的整数之和问题描述:试设计一种表示任意长度的整数的数据结构,并设计计算任意给定的两个整数之和的算法分析:利用数组来储存,数组中的每一个元素存放一个数字,数组a和数组b分别储存两个整数,在将两个整数相加时,从数组地位到高位依次将对应位相加,如果和大于9,则高位加上进位1,并将和减去10后储存到当前位#include <iostream>using namespace std;#define MAXLEN 100 // 最大位数typedef int SqLis

2021-09-13 16:29:04 445

原创 分解数组(顺序表)

分解数组,使左边的元素小于或等于0,右边的大于0问题描述:实现一个算法,把一个顺序表分解成两个部分,使顺序表中小于或等于0的元素位于左边,大于0的元素位于右边。要求不占用额外的储存空间。算法思想:设置两个指示器i和j,分别扫描顺序表中的元素,i和j分别从顺序表的左边和右边开始扫描。如果i遇到小于或等于0的元素,略过不做处理,继续向前扫描;如果遇到大于0的元素,暂停扫描。如果j遇到大于0的元素,略过不做处理,继续向前扫描;如果遇到小于或等于0的元素,暂停扫描。如果i和j都停下来,则交换i和j指向的元素。

2021-09-10 17:27:06 241

原创 听课笔记——《数据结构》第一章

一、抽象数据类型 (Abstract Data Type)1. 数据类型数据对象集数据集合相关联的操作集2.抽象:描述数据类型的方法不依赖于具体实现与存放数据的机器无关与数据存储的物理结构无关与实现操作的算法和编程语言均无关二、算法(Algorithm)一个有限的指令集接受一些输入(有些情况下不需要输入)产生输出一定在有限步骤后终止每一条指令必须有充分明确的目标,不可以有歧义计算机能处理的范围之内描述应不依赖于任何一种计算机语言以及具体的实现手段三、算法的复杂度

2021-08-09 23:20:29 161

原创 听课笔记——《二进制入门》

一、二进制规则1. 逢二进一一位数字中只有0和1两种可能。2. 尾数为0是偶数(even);尾数为1是奇数(odd)大于一位二进制数减去其末位上的数字后必然是2的乘方或2的乘方和,可以被2整除,所以必然是一个偶数。加上末位上的数字后,若末位数字是1,则该数为偶数加1为偶数加1,为奇数;若末位数字是0,则结果不变,为偶数。我觉得类似于十进制中,大于一位的十进制数减去其末位上的数后为10的乘方或10的乘方和。因此,若末位数字为0,则该数能被10整除(是10的整数倍);反之,若末位数字非0,则不能被10

2021-08-05 20:55:35 492 1

空空如也

空空如也

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

TA关注的人

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