自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言与指针

随后查看调试信息,可以看到%s遇到’\0’时停止输出。s+1可以使得s指针指向数组的第二个元素,所以当输出s+1的%s时,只从第二个元素开始输出了。随后,如果以十进制输出s,可以看到s和buf的首地址是一样的。最近着手做mit6.828的lab,发现对C语言的指针已经忘了一干二净,在此复习一下C语言的指针。首先定义字符数组buf,他的大小位十个字符长度,该数组的首地址其实也就为buf。随后定义一个指针s指向字符数组的首地址,即char* s = buf。随后对字符串进行输入,假设输入abc。

2023-05-13 14:52:55 150 1

原创 快速排序思考

晚上刷算法题时的一些感想。

2022-08-30 19:46:36 179

原创 剑指 Offer 07. 重建二叉树

剑指offer

2022-08-04 10:01:53 179

原创 排序算法总结

排序的稳定性:假设ki=kjk_i=k_jki​=kj​,且在排序序列中rir_iri​领先于rjr_jrj​,如果排序后rir_iri​仍领先于rjr_jrj​,则排序方法是稳定的,否则,排序是不稳定的。1.冒泡排序法版本一#include<iostream>#include<vector>using namespace std;int main(){ int n; cin >> n; vector<int> v(n); for (i

2022-03-14 19:37:25 1801

原创 AcWing 895. 最长上升子序列

给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数 N。第二行包含 N 个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤1000,−109≤数列中的数≤109输入样例:73 1 2 1 8 5 6输出样例:4做法一(我自己想的做法)#include<iostream>#include<vector>using namespace std;int main(){ int

2022-03-01 20:41:09 99

原创 Bob和Alice(3)

求的是最大值!!!Bob和Alice在玩一个序列游戏有一个n-1个数的序列B1B1​B2B2​.......Bn−1Bn−1B_1 B 1​ B_2B 2​ ....... B_{n-1}B n−1B1​B1​B2​B2​.......Bn−1​Bn−1​Bob又定义了一个新的序列A1A1​A2A2​.......AnAnA_1A 1​ A_2A 2​ .......A_nA nA1​A1​A2​A2​.......An​An​对每一个 i[1<=

2022-02-22 13:14:02 3475

原创 最小值-2019

题目描述给定区间[l,r]要求选出2个数i ,j满足l <= i < j <= r并且 (i * j) mod 2019 最小并求出这个最小值1 <= l < r <= 2e9输入格式l r输出格式最小值输入样例2020 2040输出样例2#include<iostream>#include<vector>using namespace std;int main(){ long long l, r; cin

2022-02-21 12:36:02 569

原创 递归算法求x的n次幂

题目描述用递归算法求xn。输入格式一行,两个整数x和n。输出格式一行,一个整数xn输入样例5 6输出样例15625#include<iostream>using namespace std;int x, n;long power(int x, int exp){ if (exp == 1) return x; if (exp % 2 == 0) { long temp= power(x, exp / 2); return temp * temp;

2022-02-14 20:05:04 2405

原创 字谜 大小写重复全排列问题

题目描述写程序从一组给定的字母中生成所有可能的单词。例如,给定单词“abe",应该输出单词 “abc”, “acb”, “bac”, “bca”, “cab” 和 “cba”。在输入的单词中,某些字母可能会出现多次。对于给定的单词,程序不应多次生成同一个单词,并且这些单词应按字母升序输出输入格式输入由几个单词组成。第1行包含一个数字,表示单词数。以下每行各包含一个单词。单词由a到z的大小写字母组成。大小写字母应被视为不同。每个单词的长度都小于13。输出格式对于输入中的每个单词,输出应该包含所有可以

2022-02-12 20:12:39 161

原创 订单管理 重复全排列

题目描述商店经理按货物标签的字母顺序对各种货物进行分类,将所有拥有以同一个字母开头的标签的货物都储存在同一个仓库中,并用该字母标记。经理收到并登记从商店发出的货物订单,每个订单需要一种货物。商店经理按照预定的顺序处理请求。请计算经理访问仓库的所有可能方式,以便在一天中一个接一个的解决所有需求。输入格式输入包含一行,其中包含所需货物的所有标签(随机排列)。对每种货物都用标签的起始字母表示,只用英文字母表中的小写字母。订单数量不超过200个。输出格式输出将包含商店经理可以访问其仓库所有可能的订单。

2022-02-12 19:01:25 595

原创 24点游戏

题目描述给出4个正整数操作数,你的任务是使用运算符(+,-,*,/)和括号对操作数进行计算,分析是否能得到24,每个操作数只能使用1次,运算符和括号可以多次使用,注意所有的中间结果都必须是整数。输入格式输入包括多行,每行4个正整数,范围是[1,13],输入以0 0 0 0标记结束输出格式若输入的4个操作数能计算出24,输出Yes,否则输出No输入样例1 1 1 12 5 7 80 0 0 0输出样例NoYes#include<iostream>using namesp

2022-02-12 16:38:46 2680

原创 进阶1.1.3 食物链

题目描述动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是"1 X Y",表示X和Y是同类。 第二种说法是"2 X Y",表示X吃Y。 此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。 1) 当前的话与前

2022-02-09 17:55:39 3047

原创 问题 A: 蛇形填数

题目描述在nn的方阵里填入1,2,3,···,nn,要求填成蛇形。例如n=4时方阵为:10 11 12 19 16 13 28 15 14 37 6 5 4上述的方阵中,多余的空格只是为了便于观察规律,不必严格输出。n<=8. 具体格式看下面的样例输出。输入格式一行,一个整数n(n<=8)输出格式在nn的方阵里填入1,2,3,···,nn.要求填成蛇形.每个数字之间用空格隔开。输入样例4输出样例10 11 12 19 16 13 28 15

2022-02-07 18:39:20 722

原创 抓住那头牛

题目描述约翰希望立即抓住逃亡的牛。当前约翰在节点N,牛在节点K(0<=N,K<=100000)时,他们在同一条线上。约翰有两种交通方式:步行和乘车。如果牛不知道有人在追赶自己,原地不动,那么约翰需要多长时间才能抓住牛?步行:约翰可以在一分钟内从任意节点X移动到接节点X-1或X+1。乘车:约翰可以在一分钟内从任意节点X移动到节点2*X。输入格式两个整数N和K。输出格式单行输出约翰抓住牛的所需的最短时间(以分钟为单位)输入样例5 17输出样例4数据范围与提示在输入样例中抓住

2022-02-07 12:32:38 668

原创 问题 F: 逆波兰表示式

题目描述逆波兰表示式是一种将运算符写在操作数后面的描述算式的方法。举个例子,我们平时常用的中缀表示法描述的算式(1+2)(5+4),改为逆波兰表示式之后为:1 2 + 5 4 + * 。相较于中缀表示法,逆波兰表示法的优势在于不需要括号。请编写程序输出以逆波兰表示法输入的算式的计算结果。输入格式输入包括一行,包括1个算式。相邻的数字或运算符用1个空格隔开。算式中的操作数和运算符总数均小于100,运算符包括±,操作数和计算过程中所有值绝对值均小于10的9次方。输出格式输出结果后换行。如果算式非法,

2022-01-24 18:25:55 401

原创 问题 E: 长整数减法

题目描述计算并输出两个长整数(不小于0,不大于10的100次方)的差,保证结果非负。输入格式输入为一组待求差的长整数对,每行为两个长整数。输出格式输出每对长整数的差,每个差输出一行。输入样例2 1100000000 50输出样例199999950#include<iostream>using namespace std;int main(){ string s1, s2; while (cin>>s1>>s2) { string s

2022-01-20 12:49:03 674

原创 问题 H: a^b

题目描述求 a 的 b 次方对 p 取模的值,其中 0≤a,b≤10^9 0<p≤10^9输入格式三个用空格隔开的整数a,b和p。输出格式一个整数,表示a^b mod p的值。输入样例2 3 9输出样例8此题部分数论知识a≡ba\equiv ba≡b modm ⇒\Rightarrow⇒ ak≡bka^k \equiv b^kak≡bkmodm此处进行简要证明:∵\because∵ a≡ba\equiv ba≡b modm∴\therefore∴ a=b+mka=b+ mk

2022-01-20 12:24:01 290

原创 寻找第K大的数

题目描述要求在N个不重复的整数中,找出第K大的整数 ,其中0<K<N<1000000输入格式输入第一行为两个正整数N K第二行为N个整数,输入保证这N个整数两两相异,每个整数的范围在-1000000到1000000之间输出格式输出第K大的整数值输入样例5 33 2 4 5 1输出样例3思路: 快速排序的变形#include<iostream>#include<vector>using namespace std;vector&l

2022-01-19 11:54:37 446

原创 问题 G: 暴力除法

题目描述输入正整数n,按从小到大的顺序输出所有形如abcde/fghij=n的表达式,其中aj恰好为数字09的一个排列,2<=n<=79输入格式输入包括多行,每行一个正整数n,2<=n<=79输出格式针对每个输入的n,从小到大输出该表达式,若没有表达式可以生成,则不输出。输入样例62输出样例79546/01283=6294736/01528=62第一种做法:递归枚举全排列再判断,需要枚举 A105A_{10}^{5}A105​,枚举次数多#include&lt

2022-01-19 10:36:51 338

原创 问题 K: 分数拆分

问题 K: 分数拆分题目描述输入正整数k,找到所有的正整数x>=y,使得1/k=1/x+1/y输入格式输入包括多行,每行一个正整数k,1<=k<=100000输出格式输出所有成立的分数式,按x从大到小的顺序输入样例212输出样例1/2=1/6+1/31/2=1/4+1/41/12=1/156+1/131/12=1/84+1/141/12=1/60+1/151/12=1/48+1/161/12=1/36+1/181/12=1/30+1/201/12=1/

2022-01-18 19:17:29 119

原创 问题 E: 括号匹配

题目描述给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来。如:[]是匹配的([])[]是匹配的((]是不匹配的([)]是不匹配的输入格式第一行输入一个正整数N,表示测试数据组数(N<=10)每组测试数据都只有一行,是一个字符串S,S中只包含以上所说的四种字符,S的长度不超过100输出格式对于每组测试数据都输出一个正整数,表示最少需要添加的括号的数量。每组测试输出占一行输入样例4[]([])[]((](

2022-01-18 10:33:32 523

原创 大整数加法

题目描述计算两个大整数的和。大整数是指超过了c,c++表示范围的整数,如1234567890000000000000000000输入格式输入包括两个大整数,每个大整数不超过100位,用空格或者换行隔开输出格式输出两个大整数的和输入样例222222222222222222222333333333333333333333输出样例555555555555555555555#include<iostream>using namespace std;int main(){ s

2022-01-18 09:37:21 314

转载 问题 M: 进阶1.1.1 畅通工程

题目描述某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?输入格式测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N ( < 1000 )和道路数目M;随后的M行对应M条道路,每行给出一对正整数,分别是该条道路直接连通的两个城镇的编号。为简单起见,城镇从1到N编号。注意:两个城市之间可以有多

2022-01-17 19:34:27 76

原创 问题 J: 2.4.2 Web导航

题目描述标准的 Web 浏览器包含在最近访问过的页面中向后和向前移动的功能。实现这些特性的一种方法是使用两个栈来跟踪前后移动可以到达的页面。支持以下命令。BACK:将当前页面推到前向栈的顶部。从后向栈的顶部弹出页面,使其成为新的当前页面。如果后向栈为空,则忽略该命令。FORWARD:将当前页面推到后向栈的顶部。从前向栈顶部弹出页面,使其成为新的当前页面。如果前向栈为空,则忽略该命令。VISIT:将当前页面推到后向栈的顶部,使得 URL 成为新的当前页面,前向栈清空。QUIT:退出浏览器。假设浏览

2022-01-17 17:29:45 342

原创 问题 K: 2.4.3 骑士移动

写程序,计算象棋中马从一个位置移动到另一个位置所需的最少移动次数输入格式有多组测试数据。第一行一个整数 T,代表数据组数。每组数据包含三行。第一行表示棋盘的长度 L,棋盘大小为 L×L。第二行包含两个整数 x, y,表示马的起始位置坐标。第三行包含两个整数 a, b,表示马的终点位置坐标。L 最大为 300。棋盘坐标范围为 [0, …, L-1]。输出格式对于每组数据输出一行,包含一个数字,即最少移动次数。若起点终点相同,则移动次数为 0。输入样例 复制380 07 01

2022-01-17 17:11:35 529

原创 73. 数组中只出现一次的两个数字

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。你可以假设这两个数字一定存在。数据范围数组长度 [1,1000]。样例输入:[1,2,3,3,4,4]输出:[1,2]分析:异或运算满足交换律,结合律。先看简单的情况,对于一个数组,如果只有一个数字出现一次,其余数字出现偶数次,那么,将数组中的所有数字进行异或得到的就是只出现一次的数字。对于这个题,如果将数组全部异或得到就是所求数的异或的值,对于异或得到的值,该值不为零,所以至少有一位为1,且对

2022-01-14 19:52:45 109

原创 蓝桥杯C++ AB组辅导课 第一讲 递归与递推

递归实现指数型枚举:从 1∼n 这 n 个整数中随机选取任意多个,输出所有可能的选择方案。输入格式输入一个整数 n。输出格式每行输出一种方案。同一行内的数必须升序排列,相邻两个数用恰好 1 个空格隔开。对于没有选任何数的方案,输出空行。本题有自定义校验器(SPJ),各行(不同方案)之间的顺序任意。数据范围1≤n≤15输入样例:3输出样例:322 311 31 21 2 3运用递归枚举每一位是否被选中。#include<iostream>using n

2021-12-02 13:58:49 216

原创 弹球 (10 分)

编写程序,该程序通过一个发射按钮可以发射一个弹球,该球遇到边界时会自动弹回,在移动固定次数后,该球停止运动。要求每次点击发射按钮都会发射一个弹球,如果点击多次,则多个弹球同时运动。该程序通过另一个结束可以结束程序的运行。参考界面如图所示。前言:博主这学期上的Java课,在PTA上老师布置了这个题,当时被折磨了很久所以打算写个博客记录下,同时复习一下,明天JAVA直接期末考试了!!!!!本题主要是JAVA GUI的加上多线程的应用,所以个人认为难度挺大,本文也是参考了其他代码的基础上自己写得。直接上代

2021-11-22 10:06:32 403

原创 PAT 拯救007

题目描述在老电影“007之生死关头”(Live and Let Die)中有一个情节,007被毒贩抓到一个鳄鱼池中心的小岛上,他用了一种极为大胆的方法逃脱 —— 直接踩着池子里一系列鳄鱼的大脑袋跳上岸去!(据说当年替身演员被最后一条鳄鱼咬住了脚,幸好穿的是特别加厚的靴子才逃过一劫。)设鳄鱼池是长宽为100米的方形,中心坐标为 (0, 0),且东北角坐标为 (50, 50)。池心岛是以 (0, 0) 为圆心、直径15米的圆。给定池中分布的鳄鱼的坐标、以及007一次能跳跃的最大距离,你需要告诉他是否有可能逃

2021-09-26 11:01:43 63

原创 PAT 目录树

题目描述在ZIP归档文件中,保留着所有压缩文件和目录的相对路径和名称。当使用WinZIP等GUI软件打开ZIP归档文件时,可以从这些信息中重建目录的树状结构。请编写程序实现目录的树状结构的重建工作。输入格式输入首先给出正整数N(≤104),表示ZIP归档文件中的文件和目录的数量。随后N行,每行有如下格式的文件或目录的相对路径和名称(每行不超过260个字符):路径和名称中的字符仅包括英文字母(区分大小写);符号“\”仅作为路径分隔符出现;目录以符号“\”结束;不存在重复的输入项目;整个输入大

2021-09-26 10:18:20 129

原创 PAT 最小生成树的唯一性

题目描述给定一个带权无向图,如果是连通图,则至少存在一棵最小生成树,有时最小生成树并不唯一。本题就要求你计算最小生成树的总权重,并且判断其是否唯一。输入格式首先第一行给出两个整数:无向图中顶点数 N(≤500)和边数 M。随后 M 行,每行给出一条边的两个端点和权重,格式为“顶点1 顶点2 权重”,其中顶点从 1 到N 编号,权重为正整数。题目保证最小生成树的总权重不会超过 230。输出格式如果存在最小生成树,首先在第一行输出其总权重,第二行输出“Yes”,如果此树唯一,否则输出“No”。如果树

2021-09-25 13:31:32 498

原创 根据后序和中序遍历输出前序遍历

题目描述本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果。输入格式第一行给出正整数N (≤30),是树中结点的个数。随后两行,每行给出N 个整数,分别对应后序遍历和中序遍历结果,数字间以空格分隔。题目保证输入正确对应一棵二叉树。输出格式在一行中输出Preorder: 以及该树的先序遍历结果。输入样例72 3 1 5 7 6 41 2 3 4 5 6 7输出样例Preorder: 4 1 3 2 6 5 7题目不过多复述,看了其他博客,感觉讲的都不清楚,公式

2021-09-21 16:03:53 2027

原创 PAT 六度空间

六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”“六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然而由于历史的原因,这样的研究具有太大的局限性和困难。随着当代人的联络主要依赖于电话、短信、微信以及因特网上即时通信等工具,能够体现社交网络关系的一手数据已经逐渐

2021-09-21 13:52:31 84

原创 两个有序链表序列的交集

输入格式输入分为两行,分别在每行给出由若干个正整数构成的非降序序列,用-1表示序列的结尾(-1不属于这个序列)。数字用空格间隔。输出格式在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出“NULL”(不带引号)。输入样例1 2 5 -12 4 5 8 10 -1输出样例2 5算法:移动数值小的链表,如果遇到相等元素则讲元素加入到新链表,当其中任意一个链表遍历到尾部,遍历结束。代码个人认为写得比较优美,就不进行注释了#include<ios

2021-09-17 13:36:34 346

原创 基础实验3-2.2:单链表分段逆转

内存限制:128 MB时间限制:1 S标准输入输出题目类型:传统评测方式:文本比较上传者:admin提交:25通过:10题目描述熟悉掌握链式线性表的基本操作给定一个带头结点的单链表和一个整数k,要求将链表中的每k个结点做一次逆转。输入格式一个整数l,一个长度为l的链表,一个整数k。输出格式翻转后的链表。输入样例61 2 3 4 5 64输出样例4 3 2 1 5 6题意很简单,直接上代码#include<iostream>#include<ve

2021-09-14 15:37:56 834

原创 基础实验6-2.5:城市间紧急救援

作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶往事发地,同时,一路上召集尽可能多的救援队。输入格式输入第一行给出4个正整数N 、M 、S 、D ,其中N (2≤N ≤500)是城市的个数,顺便假设城市的编号为0 ~ (N −1);M 是快速道路的条数;S 是出发地的城市编号;D 是

2021-09-12 17:49:51 319

原创 进阶实验2-3.4:素因子分解

题目描述给定某个正整数N,求其素因子分解结果,即给出其因式分解表达式N=p1k1p2k2…pmkm。输入格式输入long int范围内的正整数N。输出格式输出N=p1k1*p2k2…pm^km。pi由小到大输出,当ki==1时可以直接输出pi。输入样例1323输出样例1323=3^ 37^2这个题比较简单直白,直接上代码#include<iostream>#include<math.h>using namespace std;bool is_prime(i

2021-09-09 16:56:41 413

原创 问题 A: 案例2-1.3:数列求和

给定某数字A(1=<A<=9)以及非负整数N(0=<N<=100000),求数列之和S=A+AA+AAA+…+AA…A(N个A)。例如A=1,N=3时S=1+11+111=123.输入格式输入数字A(1<=A<=9)与非负整数N。输出格式输出N项数列之和S的值输入样例1 3输出样例123哈哈哈哈这个题,完全用数学方法推导就可以轻松AC。首先,我们研究1+11+111+1111+111……1(n个1)如果我们不考虑进位的话答案就是 12345678…

2021-09-08 11:04:04 489 1

原创 进阶实验8-2.1:逆散列问题

给定长度为 N 的散列表,处理整数最常用的散列映射是 H (x )=x %N。如果我们决定用线性探测解决冲突问题,则给定一个顺序输入的整数序列后,我们可以很容易得到这些整数在散列表中的分布。例如我们将 1、2、3 顺序插入长度为 3 的散列表HT[]后,将得到HT[0]=3,HT[1]=1,HT[2]=2的结果。但是现在要求解决的是“逆散列问题”,即给定整数在散列表中的分布,问这些整数是按什么顺序插入的?输入格式输入的第一行是正整数 N(≤1000),为散列表的长度。第二行给出了 N 个整数,其间用空

2021-09-08 09:59:33 507

原创 案例7-1.5:与零交换

将 { 0, 1, 2, …, N-1 } 的任意一个排列进行排序并不困难,这里加一点难度,要求你只能通过一系列的 Swap(0, *) —— 即将一个数字与 0 交换 —— 的操作,将初始序列增序排列。例如对于初始序列 { 4, 0, 2, 1, 3 },我们可以通过下列操作完成排序:Swap(0, 1) ⟹ { 4, 1, 2, 0, 3 }Swap(0, 3) ⟹ { 4, 1, 2, 3, 0 }Swap(0, 4) ⟹ { 0, 1, 2, 3, 4 }本题要求你找出将前 N 个非负整数的

2021-09-06 11:26:20 1177 1

空空如也

空空如也

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

TA关注的人

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