自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 单链表相加

先用头插法创建单链表(目的是为了将加数逆序),然后用两个指针分别指向两个单链表,直到有一个单链表遍历完,再把另一个剩下的部分放到结果单链表中,需要注意的是,不能直接照搬,可能会有进位,甚至需要再创建一个结点(因为结果的长度最大为max(s1,s2)+1)。最后,将结果单链表逆序(使用头插法建立答案单链表),打印输出即可。设两个加数的长度分别为s1,s2,最后的和的长度s最大可以取到max(s1,s2)+1。得到的和也是逆序的,因此最后需要将。题目:用单向链表表示十进制数,求两个正整数的和。

2024-11-02 21:24:19 405

原创 升序数组两两不相等

复杂度分析:最坏时间复杂度为O(n):可能每次a[mid]都等于mid+1,此时需要遍历整个数组;平均时间复杂度为O(logn):平均情况下,T(n)=T(n/2)+O(1);空间复杂度为O(logn):递归调用的深度为logn。题目:给定一个排好升序的数组A[1],A[2],…一个升序且值都不相等的数组,如果第一个数大于右下标(数组最后一个数的下标),或最后一个数小于左下标,则这个数组里一定没有满足题意的数。复杂度分析:最坏时间复杂度为O(n),平均时间复杂度为O(n);空间复杂度为O(logn)。

2024-11-02 20:44:53 353

原创 最大公因数和最小公倍数

【代码】最大公因数和最小公倍数。

2024-11-02 19:59:49 205

原创 动态规划使用最少张数的货币找钱

思路:当只用面值为s[1], s[2],…问题:设有n种不同面值的货币,存于数组s[1..n]中。现用这些货币来找钱,各种货币使用的个数不限。C[i][j]=min(C[i][j-s[i]]+1,C[i-1][j]),当j>=s[i]C[i][j]=0x3f3f3f3f,当i=0,j!C[i][j]=C[i-1][j],当j

2024-10-24 11:21:44 271

原创 插入加号使数字串表达式最小

问题:有一个由数字1,2,3……,9组成的数字串(长度不超过500),问如何将M(1

2024-10-24 08:55:40 410

原创 100层楼两个玻璃球找临界楼层所需要的次数

max(i,1+F[n-i])表示第一次从第i层楼扔,如果碎了,临界楼层一定在1~i层,但是现在只有一个玻璃球了,所以只能从1楼一层层往上找,直到i-1层。如果没碎,临界楼层一定在i+1~n层,共有n-i层,因为现在有两个玻璃球,所以和只有一个球那样找,有两个玻璃球找的次数为F[n-i],加上第一次扔的1次,共1+F[n-i]次。对于第n层楼,F[n]=min(max(1,1+F[n-1]),max(2,1+F[n-1]),max(3,1+F[n-3]),…,max(n-1,1+F[1]))。

2024-10-23 21:09:33 845

原创 动态规划数塔问题

题目:从数塔顶层到底层或从底层到顶层,在每一个结点可以选择向左走或是向右走,要求找出一条路径,使路径上的数值和最大。考虑从顶到底,需要在叶子结点中找最大和。而从底到顶,最大和一定为dp[1][1]。dp[i][j]表示在第i层第j个位置上的最大和。

2024-10-23 17:23:07 306

原创 动态规划矩阵连乘

2、递归方法(用二维数组m[i][j]记录已经算过的course(i,j))题目:n个矩阵连乘,求最小的计算次数。Mi矩阵维度为r[i]×r[i+1]。1、递归方法(有大量的重复计算)

2024-10-23 16:08:57 421

原创 动态规划求数值和最小路径

首先对dp[i][j]进行初始化,显然,dp[0][0]=a[0][0],第一行:dp[0][j]=dp[0][j-1]+a[0][j],因为点(0,j)只能由(0,j-1)向右走得到。:求在(i,j)处的最小路径长度,只需要取(i-1,j),(i,j-1)和(i-1,j-1)中的最小值,然后加上点(i,j)的值即可。因为对于(i,j)点,只有三种情况能到达该点,即从(i-1,j)向下走,(i,j-1)向右走,(i-1,j-1)向斜向下走。因此,最后所求为dp[n-1][m-1]。

2024-10-23 09:55:32 330

原创 穿越沙漠问题

思路:从终点往前推。距离终点500km应有一个加油站,油量为500L,这样当吉普车到达该加油站时,能直接到达终点,并且油刚好用完(吉普车达到该加油站时也正好用完之前的油)。然后思考第2个加油站,从刚刚的加油站往前推,吉普车要运500L的油放在第1个加油站,必然需要来回运,至少需要走3段路。要想让这段路尽量长,就要多耗油,最多能耗500L油,500L油能走500km,每段走500/3km,所以,第2个加油站的油量为500L+500L(运到第1个加油站的油量+路上耗油),距离终点500km+500/3km……

2024-10-18 20:08:09 806

原创 找出n个自然数(1,2,3,……,n)中取r个数的组合。

题目:找出n个自然数(1,2,3,……,n)中取r个数的组合。

2024-10-08 08:30:35 624

原创 2的幂次方表示

例如:137=2^7+2^3+2^0,同时约定几次方用括号来表示,即a^b可表示为a(b),由此可知,137表示为:2(7)+2(3)+2(0),进一步:7=2(2)+2+2(0)(2^1用2表示)3=2+2(0)。输出:符合约定的n的0,2表示(在表示中不能有空格)题目:任何一个正整数都可以用2的幂次方表示。的2次幂写法,因此所求即为t(n,0)。然后,t(n/2,r+1)等价于。输入:正整数(n<=2000)

2024-10-08 08:10:25 727

原创 双递归摆动数列

通过递归可以求得a[i]的值,对于前n项和,直接的做法是从1到n遍历,再求和。但是这样会重复地算同一个数的a[i]值,因为递归的时候就可能已经求过a[i]了。因此,优化方法如下:建立一个。,下一次求a[i]只需要时先判断A[i]是否等于0(初始化为0,正常情况a[i]不会为0),如果不是0,就可以直接用。i为正整数,试建立递归,求该数列的第n项与前n项的和。题目:递归求解双递推摆动数列。

2024-10-08 07:45:31 156

原创 整数划分问题

思路:P(n,m)表示:整数n,划分的最大值为m,共有P(n,m)种划分方法。思路:从1到max选择一个数,以该数为最大值进行划分,找到一个划分结果。题目1:求整数划分个数。

2024-10-07 14:56:58 450

原创 汉诺塔问题

题目:开始时A座上有n个盘子,大的在下,小的在上。3个基座上始终保持大盘在下,小盘在上,现需把n个盘子从A座移到B座,通过C座辅助。

2024-10-07 13:57:20 287

原创 求矩阵的鞍点

代码:(多个最小值认为第一个为最小,更严谨的代码在最后)题目:求一个矩阵的鞍点,即行上最小而列上最大的元素。

2024-10-07 13:31:28 538

原创 求1000以内的完数

题目:一个数如果恰好等于他的因子之和(包括1,但不包括这个数),这个数就是完数。编写算法找出1000之内的所有完数,并按下面格式输出其因子:28 it's factors are 1,2,4,7,14。

2024-10-07 11:16:51 237

原创 优化阶乘求和

思路:循环n次,每次求每一项的值,并加起来,求每一项的值需要求阶乘,而阶乘的时间复杂度为O(n),所有总的时间复杂度为O(n^2)。优化:求每一项的值不需要求阶乘。可以发现,第i项等于前一项除以(2i-1)(2i-2)。以上算法的时间复杂度为O(n)。

2024-10-07 10:57:45 323

原创 单链表逆序

题目:将不带头结点的单链表逆序。

2024-10-03 17:06:01 217

原创 打印规律图形

上图所示:1的坐标为(1,1),因为i=1,j=1时为1。10的坐标为(4,1),对应放在数组的a[4][1]1的坐标为(1,1),对应放在数组的a[1][1]2的坐标为(1,2),对应放在数组的a[2][2]3的坐标为(1,3),对应放在数组的a[3][3]4的坐标为(1,4),对应放在数组的a[4][4]5的坐标为(2,1),对应放在数组的a[2][1]6的坐标为(2,2),对应放在数组的a[3][2]8的坐标为(3,1),对应放在数组的a[3][1]9的坐标为(3,2),对应放在数组的a[4][2]

2024-09-24 20:57:13 356

原创 求n至少为多大时,n个1组成的整数能被2013整除

思路:直接用n个1组成的整数去除以2013来判断是否可以被2013整除肯定不行,因为如果n的值会很大,当n大于9时就已经超过了int的范围,因此利用m=(m%2013)*10+1来判断。题目:编写程序,求n至少为多大时,n个1组成的整数能被2013整除。,其中3*3一定能被3整除,因此只需要看。例如11÷3=3……能不能被3整除即可。

2024-09-16 14:17:22 384

原创 数据结构——第8章 排序

前i-1个元素已经有序,将第i个数插入到该有序序列中。打扑克牌时,手中的牌已经有序,每抓一张牌,就插入到合适的位置,直到抓完牌。根据查找方法的不同,这里分为直接插入排序(对应顺序查找)折半插入排序(对应折半查找)和希尔排序。

2024-06-10 12:19:31 719

原创 蓝桥杯练习系统(算法训练)ALGO-932 低阶行列式计算

内存限制:64.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s。接下来n行,每行n个数,表示行列式,数据保证行列式中每个数绝对值不超过2*10^9。一个数表示行列式的值,答案对p取余(余数需要是非负数)。给出一个n阶行列式(1<=n<=9),求出它的值。对于100%的数据n<=9,p<=40000。思路:利用代数余子式求行列式的值。第一行给出两个正整数n,p;对于20%的数据n<=2。对于40%的数据n<=3。

2024-05-28 12:46:11 534 1

原创 蓝桥杯练习系统(算法训练)ALGO-933 汉诺四塔

对于一次操作a,b,必须满足a塔有盘子,且当前状态下a塔最上面的盘子比b塔最上面的盘子(如果有)小,当然b塔没有盘子可以直接移动;XJJ最近迷上了一款小游戏——汉诺四塔,但是由于智商有限,步骤多了容易手滑,于是他请求小伙伴们来帮他,人家才不是cheat呢。·step必须是1到100000以内的整数,a、b必须是1到4的整数,a和b可以相等;思路:与汉诺塔类似,不过多了一个塔,a->d就可以通过b,c塔来辅助。同汉诺塔相似,不过塔有4个,要求将盘子从塔1运到塔4。第一行输出step表示你的操作步数。

2024-05-27 09:29:13 231

原创 汉诺塔问题

将在a塔上的n个盘子移动到c塔,b塔作为辅助。

2024-05-27 08:22:30 177

原创 蓝桥杯练习系统(算法训练)ALGO-935 互质数个数

内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s。已知正整数x,求1~x-1中,有多少与x互质的数。(互质是指两个数最大公约数为1)共一行,只有一个整数,表示与x互质数的个数。有1,5,7,11四个数与12互质。输入一行包括一个正整数x。

2024-05-26 15:03:18 265

原创 蓝桥杯练习系统(算法训练)ALGO-934 序列

内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s。王神想要知道n的所有排列的逆序对数和,但是他觉得太水了,于是让你算。一行即答案,对1007取模。

2024-05-26 11:58:00 306

原创 dfs全排列

【代码】dfs全排列。

2024-05-26 11:22:13 591

原创 蓝桥杯练习系统(算法训练)ALGO-936 砝码称重

内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s。小明捡到了一架没有游标的天平和N个标有重量的砝码,于是他想知道他能够称出多少种不同的重量(假设只能将砝码放在一侧)。输入的第一行包含一个正整数N,表示有N个砝码。接下来一行有N个正整数,表示N个砝码的重量。cnost int N,M的设置居然对答案有影响?输出一行,包含一个整数,表示能够称出多少种不同的重量。N

2024-05-25 22:39:10 241

原创 蓝桥杯练习系统(算法训练)ALGO-937 抗击虫群

但是,这些药物要发挥效用,必须填满位于A区的两个容器S、T,这两个容器的容量分别为n,m而每次填充药物的量p是固定的,现在人们想知道,将P设置为多少才能在最快时间内填满两个容器(即每次的添加量为P,一次只能填充一个容器,且不可超出容器容积,可以认为在添加完S容器后,在添加T容器)内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s。ps:由于入侵有多次,容器的体积会因外界元素的干扰而产生变化,你需要输出每次的P;

2024-05-21 21:25:50 349

原创 蓝桥杯练习系统(算法训练)ALGO-938 JOE的早餐

JOE要以最少的体力将很多堆早餐合并成一堆,但是由于物是人非等种种原因,现在JOE将两堆早餐合并成一堆早餐所消耗的体力值 = 被合并的两堆早餐的重量之积!T(土)H(豪)U的早餐有很多很多种类,比如面包,牛奶,凤梨酥,香蕉,蛋饼,饺子,椰子糖,豆香鸭……同一类的早餐,重量都是相同的。今天早上,桃李有n个种类的早餐,对于每个种类,大妈将告诉你,每一个种类的早餐的重量,以及该种类的早餐共有多少堆。第二~n+1行,每行两个正整数pi,qi——表示重量为pi的早餐有qi堆,保证所有的p不同;

2024-05-21 19:13:24 312

原创 蓝桥杯练习系统(算法训练)ALGO-939 区间最大和

思路:dp[i]:表示以第i个数字结尾的序列和最大值为dp[i]。因此,最大的dp[i]即为答案。思路: 利用前缀和,通过sum[R]-sum[L-1]求[L,R]区间的和。暴力方法是将每个区间的和都算出来,取最大值,这样的话时间复杂度为O(n^2),会超时。内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s。给定一段长度为N的整数序列A,请从中选出一段连续的子序列(可以为0)使得这段的总和最大。一个整数表示选出的最大的和。

2024-05-20 20:43:33 345

原创 蓝桥杯练习系统(算法训练)ALGO-940 试题3971 丑数

有一些正整数,如果这个正整数分解质因数之后,只包含2或3或5,那么该数即为“丑数”,比如100就是“丑数”,100分解质因数之后只包含2和5;14就不是“丑数”,因为14分解质因数之后,包含了7.内存限制:256.0MB C/C++时间限制:5.0s Java时间限制:15.0s Python时间限制:25.0s。输入正整数n,请写程序判断n是否是“丑数”,是“丑数”则输出“yes”,否则输出“no”。一个字符串yes 或no。n不超过C语言整型范围。

2024-05-20 08:25:58 202

原创 蓝桥杯练习系统(算法训练)ALGO-941 P0601字符删除

编写一个程序,先输入一个字符串str(长度不超过20),再输入单独的一个字符ch,然后程序会把字符串str当中出现的所有的ch字符都删掉,从而得到一个新的字符串str2,然后把这个字符串打印出来。内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s。

2024-05-14 08:32:12 421 1

原创 蓝桥杯练习系统(算法训练)ALGO-943 P0604 Runaround数

(2) 这些数字构成了一个序列,序列中每位数字的值指明了下一个序列数所在的位置。(3) 序列起始于该整数最左边的数字,并且在遍历该整数的所有数字各一次后,又回到了起始位置。(2) 往右走8步,停在6上面(注意走到右边界时要返回到最左边):8 1 3 6 2。(1) 从最左边的数字(即8)开始:8 1 3 6 2。(3) 往右走6步,停在2上面:8 1 3 6 2。(4) 往右走2步,停在1上面:8 1 3 6 2。(5) 往右走1步,停在3上面:8 1 3 6 2。

2024-05-10 15:26:42 344

原创 蓝桥杯练习系统(算法训练)ALGO-945 车厢

一节列车有N个隔间,一个隔间可以容纳四个人,隔间都住满了,同学们买到的票并不在一起,有的隔间没有同学,有的隔间只有一个同学,有的有两个,有的三个,有的住满了同学。好在可以跟别的乘客商量换座来让同学们住到同一个隔间,但劝说别人换位置是一件比较麻烦的事情,请问最少交换多少次能够让所有有同学的隔间中都有不少于三个同学?如果结合后2剩下了,将这一堆2结合,最后剩下的可能有0个2,1个2,2个,2,继续讨论。如果结合后1剩下了,将这一堆1结合,最后剩下的可能有0个1,1个1,2个1,继续讨论。

2024-05-06 21:21:45 379

原创 蓝桥杯练习系统(算法训练)ALGO-946 Q神的足球赛

足球赛上,只见Q神如闪电般的速度带球时而左,时而右,时而前,时而后,时而上,时而下……告诉你他的每一次转的方向以及前进的距离,请你回答他最后在哪个位置,面朝那一个方向。假设他一开始在(0,0,0),面朝x轴的正方向。其中,f(forward)表示继续前进,方向不变;l(left)表示向左转;对于每一组数据,输出Q神的坐标和他的朝向。其中:左手系的x正方向、y正方向、z正方向分别位0、1、2,对应的负方向分别为3、4、5.思路:需要知道Q神的脸的朝向、脚的站位(头指向脚的方向)才能确定Q神的位置。

2024-05-05 16:24:08 364 1

原创 蓝桥杯练习系统(算法训练)ALGO-947 贫穷的城市

有一天,一辆小轿车误入了这座城市,它只能沿着公路走,它走啊走,却再也走不出这座城市了……对于100%的数据:1

2024-05-03 23:50:03 431

原创 蓝桥杯练习系统(算法训练)ALGO-949 勇士和地雷阵

勇士们不小心进入了敌人的地雷阵(用n行n列的矩阵表示,'*'表示某个位置埋有地雷,'-'表示某个位置是安全的),他们各自需要在规定的步数(一步代表走到和当前位置相邻的位置)内绕开地雷到达出口(第一行第一格,即坐标为(0,0)的位置)才能完成任务,告诉你每个勇士的位置(x,y)和规定的步数s,请你判断每个勇士能否顺利完成任务(1代表“能”,-1代表“不能”)。输入数据的第一行为一个整数n;按顺序输出对每个勇士是否能顺利完成任务的判断(1代表“能”,-1代表“不能”),对每个勇士的判断占一行。

2024-05-03 17:36:49 894 1

原创 归并排序求逆序数

1、对数列不断等长拆分,直到一个数的长度。分治思想,时间复杂度O(nlogn)3、重复以上两个过程,直到递归结束。2、回溯时,按升序合并左右两段。

2024-05-03 14:46:44 329

空空如也

空空如也

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

TA关注的人

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