自定义博客皮肤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)
  • 收藏
  • 关注

原创 P2758 编辑距离

个的最小编辑距离(字符串的下标从1开始),表示长度为i的字符串变成空串要删i次。

2023-03-08 10:54:47 155

原创 P1036 [NOIP2002 普及组] 选数

本来思路是用unordered_set来存储答案的,这样最后输出size就可以知道有多少种不重复的答案,但有几个数据过不了,不知道为什么。于是我们可以求出k个数的全排列有多少形式(cnt),可以看到,3个数的全排列有6种形式,这样我们用ans/cnt就可以求出答案了。也就是说,dfs搜索下来,和为29的就被重复加了6次,我们要求出答案,也就是只保留一次29。求全排列的个数,可以用dfs,也可以用数学公式,我数学不好,所以直接用DFS了。然后本题判断素数,可以用最普通的试除法,也可以用筛素数的算法。

2023-03-03 10:48:23 268

原创 洛谷P1618 三连击(升级版)题解(DFS全排列做法)

主要思想就是:每次求出一个1~9的全排列,比如715692438,都可以取出3个数(715、692、438),所以我们可以一边求全排列一边判断三个数是否满足条件。若没有一次满足条件,即flag没有被赋值为true,就输出No!

2023-03-02 20:25:41 248

原创 动态规划:求数组的最长递减子序列的长度

求数组的最长递减子序列长度题目描述给定一个整数序列,输出它的最长递减(注意不是“不递增”)子序列。输入输入包括两行,第一行包括一个正整数N(N<=1000),表示输入的整数序列的长度。第二行包括用空格分隔开的N个整数,整数范围区间为[-30000,30000]。输出输出最长递减子序列长度。样例输入89 4 3 2 5 4 3 2样例输出5f[i]表示以i结尾的最长递减子序列的长度j<i,当a[j]>a[i],f[i] = f[j] + 1核心方

2022-03-26 13:12:25 2434

原创 计算机组成原理期末考试:Cache的写操作策略(通俗易懂)

Cache的写操作说的就是:你想把从图书馆(主存)借回来放在宿舍书架上(Cache)的书(副本)进行改动后,图书馆的书(原本)也要进行改动且与你在宿舍对副本改完之后的版本一致。(你自己就是CPU,你说了算,你要怎么改,无论副本原本都要按你的改)由于Cache的内容只是主存部分内容的副本,他应当与主存内容保持一致。而CPU对Cache的写入更改了Cache的内容。如何与主存内容保持一致,可选用如下三种写操作策略:(1):写回法:CPU写Cache命中时,只修改Ca...

2022-03-17 09:48:15 3575

原创 计算机组成原理期末考试:Cache的替换策略(通俗易懂)

Cache:宿舍书架主存:图书馆Cache的工作原理要求他尽量保持最新数据(最新借的书),当宿舍书架满了,又有想从图书馆借来看的书:替换原本放在书架上的书——————Cache的替换直接映射的替换策略:因为每本书在书架上有特定的位置,想放一本新书进书架(Cache)时,如果有旧书占了他的位,把对应的那本旧书拿出来即可。没有什么复杂的策略。全相联和组相联Cache的替换策略:(1):最不经常使用(LFU)算法:在一段时间内,Cache内被访问次数最少的数据(书架上翻阅...

2022-03-17 09:45:59 3700

原创 计算机组成原理期末考试:三种地址映射方式

1.直接映射主存地址格式中有Cache行号,每个主存块存放的行位置是固定的,主存标记位只与行号表示的那行的标记做对比,命中,则直接在Cache读取送入CPU,未命中,则访问主存来找。优点:查找效率高,硬件设备简单缺点:命中率较低冲突概率大(连续访问两个映射到Cache同一行的块,就会冲突)冲突就要有替换操作(一山不容二虎),频繁的替换就会降低Cache效率因此,直接映射方式适合于需要大容量Cache的场合,更多的行数可以减...

2022-03-17 09:43:27 8415

原创 动态规划4:最长子段和

问题描述:最大子段和问题是将一个n个整数的序列a[1],a[2]….a[n]中字段a[i]….a[j]之和,(1<=i<=j<=n)求这些子段和中最大的。(连续的!)例如(a[1],a[2],a[3],a[4],a[5],a[6])=(-2,11,-4,13,-5,-2)时,最大子段和为20,子段为a[2],a[3],a[4]。...

2022-03-15 13:45:15 631

原创 动态规划3:最长公共子序列

首先我们来区分一下子序列和子串:子串是连续的,子序列是一个字符串中删除若干元素后形成的(两个元素前后相对顺序不变)子序列包含子串例:str = abcdefg子串:cde子序列:acf问题 F: 最长公共子序列题目描述一个字符串A的子串被定义成从A中顺次选出若干个字符构成的串。如A=“cdaad" ,顺次选1,3,5个字符就构成子串" cad" ,现给定两个字符串,求它们的最长共公子串长度输入第一行两个字符串用空格分开。两个串的长度均小于2000 。输出.

2022-03-13 22:25:56 1130

原创 python学习笔记:生成随机四位数验证码

"""随机生成四位数验证码"""import randomcheckcode = ''for i in range(4): a = random.randint(0, 9) # 生成一个0~9随机数 b = str(a) # 把生成的随机数转变成str字符串类型,以便下一行进行拼接操作 checkcode = checkcode + bprint(checkcode)...

2022-03-13 14:55:20 4301

原创 python学习笔记:求最大公约数

法一:辗转相除法def gcdRecur(a,b): temp = a%b while temp!=0: a = b b = temp temp = a%b return bprint(f"15和70的最大公约数为{gcdRecur(15,70)}")法二:辗转相除法的递归形式def gcdRecur(a,b): if b == 0: return a else: ret

2022-03-13 11:06:09 971

原创 Python学习笔记:字符串翻转(切片与递归)

样例输入:CUMT1909样例输出:9091TMUC递归思想:递归的边界条件即为最多只有一个字符的时候,此时翻转前后,结果不变。翻转后的字符串为原来的最后一个元素 + 前n-1个元素翻转后的状态,即对前n-1的字符串切片递归调用函数def rev(s): if s == "" or len(s) == 1: # 递归边界条件:首先通过判断字符串s是否为空(""),或者s的长度是否为1,若满足则反转后的字符串为本身; return s else:.

2022-03-13 10:06:17 1500

原创 Python学习笔记:逢7说“过“

逢7说“过”小迪和朋友玩聚会小游戏,规则是逢7说过(出现7和7的倍数,如7、14、17、......),那么他们从1开始说到100,一共说了多少次过呢?请通过while循环实现,计算过的次数,最后格式化输出:"一共说了xx次过"。自己实现的代码:i = 1 #报的数count = 0 #说"过"的次数while i <= 100: if i % 10 == 7 or i % 7 == 0 or i//10 == 7: count += 1 i

2022-03-12 12:06:21 7106

原创 动态规划2:算法考试矩阵连乘问题(超详细手写过程)

动态规划理论基础:(6条消息) 动态规划1:动态规划的入门初学理论基础_黑色柳丁Angel的博客-CSDN博客矩阵连乘问题是我在算法课接触的第一个动态规划问题,老师用了整整一节课介绍问题描述:给定n个矩阵{A1,A2,... ,An},其中相邻的两个矩阵(Ai与Ai+1)是可乘的(i=1,2,... ,n-1)。考察这n个矩阵的连乘积(A1A2...An)。由于矩阵乘法满足结合律,因此计算矩阵的连乘积可以有不同的计算次序。这种计算次序可以用加括号的方式来确定。例如:矩阵连乘积 A1.

2022-03-11 15:19:16 5058 5

原创 动态规划1:动态规划的入门初学理论基础

动态规划算法的四个步骤:1.找出最优解的性质,并刻画其结构特征2.递归地定义最优值3.自底向上的方式计算最优值4.构造最优解 注:步骤1~3是动态规划算法的基本步骤,在只需要求出最优值的情况下,步骤4可 省略,若需要求出问题的最优解(具体的解的过程),则必须执行步骤四动态规划和分治法的异同:相同点:基本思想都是将待求解问题分解为若干子问题,先求解子问题,再结合这些子问题的解得到原问题的解。不同点:与分治法不同,适合动态规划法求解的问题经分解得到的子问题往往...

2022-03-10 23:30:05 1680

转载 Joseph约瑟夫问题(C++)

题目描述The Joseph's problem is notoriously known. For those who are not familiar with the original problem: from among n people, numbered 1, 2, . . ., n, standing in circle every mth is going to be executed and only the life of the last remaining person wil

2022-03-09 10:55:16 1195 1

原创 Factstone Benchmark问题

题目描述Amtel has announced that it will release a 128-bit computer chip by 2010, a 256-bit computer by 2020, and so on, continuing its strategy of doubling the word-size every ten years. (Amtel released a 64-bit computer in 2000, a 32-bit computer in 1990,

2022-03-08 23:15:48 684

原创 洛谷学习笔记P1008

题目描述将 1, 2, …,9 共 9个数分成 3组,分别组成 3个三位数,且使这 3 个三位数构成 1 : 2 : 3 的比例,试求出所有满足条件的 3 个三位数。输入格式无输出格式若干行,每行 3个数字。按照每行第 1 个数字升序排列。输入输出样例输入 无输出192 384 576* * * ... * * *(剩余部分不予展示)这是暴力枚举的题目,灵感来自题解区作者WilliamEdward。核心思路:两个集合中都是一位数且不为0时,满足两个集合所有.

2022-03-07 09:31:45 564

原创 C++递归全排序(full permutation)

#include <iostream>using namespace std;//k:递归的层次(从0开始),m:边界(最后一个元素)下标void perm(int list[], int k, int m){ if (k == m) //当k到了最后面时,即只剩1个元素,此时list就是其中一个排列,输出list { for (int i = 0; i <= m; i++) { cout << list[i] << ' ';...

2022-03-06 14:25:16 828

原创 算法:分治法之合并排序

合并排序算法思想:先将无序序列利用二分法划分为子序列,直至每个子序列只有一个元素(单个元素就是有序),然后再对有序子序列两两进行合并排序。合并方法是循环地将两个有序子序列当前的首元素进行比较,较小的元素取出,置入合并序列(这就是合并排序O(n)的辅助空间花销的来源,建立了一个新的空数组来接收排好序的子序列)的左边空置位,直至所有元素置入合并序列怎么划分就怎么合并!!!!(截图自B站up主:请叫我AXin 的视频)解释: (0+8)/ 2 = 4 所以下标为4及左边...

2022-03-05 22:44:20 1649

原创 binary search二分查找(Python/C++)

注意:二分查找的数组一定要是有序单调的Python:binary_search函数的作用是返回目标元素item的下标,若找不到则return Nonedef binary_search(list, item): low = 0 high = len(list) - 1 while low<=high: mid = (low+high)//2 guess = list[mid] if guess == ite.

2022-03-05 20:36:56 793

原创 算法:分治法之快速排序

思路:1.找一个支点元素pivot,一般选这组数的第一个2.把大于pivot的数都放在它的右边,小于它的数都放在左边3.分别对左右子序列进行1、2步操作(分治策略的体现)示例:19 97 09 17 01 08Pivot↑ ↑ L R选择第一个元素(19)作为支点pivot,...

2022-03-05 19:49:16 6055

原创 sort散列法排序

题目描述给你n个整数,请按从大到小的顺序输出其中前m大的数。输入每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,且都处于区间[-500000,500000]的整数。输出对每组测试数据按从大到小的顺序输出前m大的数。样例输入5 33 -35 92 213 -644样例输出213 92 3这是算法课的第一道OJ题,我的第一想法是利用冒泡排序把n个整数由大到小排序,再利用for循环输出前m个数字,虽然能实现题

2022-03-05 13:07:05 362 3

空空如也

空空如也

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

TA关注的人

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