自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 计算机科学与导论 第十七 十八章 计算理论,人工智能

人工智能是对程序系统的研究,该程序系统在一定程度上能模仿人类的活动,如感知,思考。学习和反应。

2024-04-17 16:43:51 824

原创 计算机科学与导论 第十六章 安全

在对称密钥密码中,明文和密文被看做符号的组合,加密和解密是对这些符号的排列或替换。在非对称密钥密码术中,明文和密文都是数字,加密和解密的过程是对数字应用数学函数并创造其他数字的过程。注意,对称密钥加密对加密和解密使用同一个密钥.此外加密算法和解密算法是互逆的,俩俩会抵消。如果把加密和解密想象成是带有钥匙的挂锁的锁上和打开,那么公钥上的挂锁只能被相应的私钥打开。为了安全,信息需要避开未授权的使用(机密性),保护信息不受到未授权的篡改(完整性),并且对于得到授权的实体来说是需要时可用的(可用性)。

2024-04-17 10:06:04 1148

原创 计算机科学与导论 第十五章 数据压缩

请记住,选择所结合的俩个节点的权值和必须是所有可能当中的最小。如果接受和发送双方都有这样的字典,那么字符串由字典中的索引代替,以减少通信的数据传输量。注意这些编码的要点,首先,出现频率高的字符的编码要比出现频率低的编码字符的编码短,在这个编码系统中,没有一个编码是其他编码的前缀。信息的丢失在文本文件和程序文件都是不能接受的,但是在图片,视频或音频文件时可以接受的。这种算法的大致思想是将数据中连续重复出现的符号用一个字符和这个字符出现的次数代替。在赫夫曼编码中,对于出现更为频繁的字符分配较短的编码。

2024-04-16 11:27:18 390

原创 计算机科学与导论 第四章和第五章

在程序开始执行前,将程序指令序列的起始地址,即程序的第一条指令所在的内存单元地址送入PC,CPU按照 PC的指示从内存读取第一条指令(取指)。异或是将俩个指定位相同为0,不同为1,主要的用处判断一个数出现是奇数次还是偶数次,或者将该数字的某些指定位取反。掩码的0对应的位将会保持不变,而掩码的1会使指定位取反,利用此特性将某些位取反。算术右移位保留符号位。现在,计算机存储的不仅是数据,还有存储在内存中相对应的程序。只读存储器的内容是制造商写进去的,用户只能读但不能写,它的有点是当切断电源后,数据也不会丢失。

2024-04-07 21:29:21 820

原创 复杂度3 二分查找函数

本题要求用二分法查找顺序表的一个值,比较简单注意指针格式即可。

2024-03-30 12:08:49 186

原创 最大连续子序列和求值

没有必要了因为前面肯定是拖累,最大和肯定不会是包含前面和为负值的那些,那我们就重新计算和,即把计和变量归为0 重新计算再和最大值变量比更新最大值。最大连续子序列求和,什么是连续最大子序列,先简单来说一个数组int a[]={-9,1,-10,2,3,4,-2,5,6,-2,-3};那它的连续最大子序列是2,3,4,-2,5,6 是18,就是使和最大的子序列。既然求连续最大的那我直接把所有的连续组合挨个求一次和最大的值比对,比他大就更新,结果就求出来了,算法复杂度是o(这个大概有几种想法,这里只介绍俩种。

2024-03-30 11:39:29 259

原创 python基础教程十 再谈抽象

我们终于要创建自定义类了!下面是一个简单的示例s=person()s.greet()这个示例包含三个方法定义,它们类似于函数定义,但位于class语句内。person当然是类的名称。class语句创建独立的命名空间,用于在其中定于函数。一切看起来都挺好,但你可能想知道参数self是什么。通过调用s.set_name(“dasda”)和s.greet()时,s都会作为第一个参数自动传递给它们。我将这个参数命名为self。

2024-03-04 22:07:47 721

原创 自测-5 Shuffling Machine(python版本)

其中“S”代表“黑桃”,“H”代表“红心”,“C”代表“梅花”,“D”代表“方块”,“J”代表“小丑”。例如,假设我们只有5张牌:S3, H5, C1, D13和J2。给定一个洗牌顺序{4,2,5,3,1},结果将是:J2, H5, D13, S3, C1。如果我们再次重复洗牌,结果将是:C1, H5, S3, J2, D13。由于标准的洗牌技术被认为是薄弱的,并且为了避免员工通过不适当的洗牌与赌徒合作的“内部工作”,许多赌场使用了自动洗牌机。机器根据给定的随机顺序洗一副54张牌,并重复给定的次数。

2024-03-04 22:01:02 514

原创 陈越姥姥数据结构自测4(python)

这题我使用python去解决比较简单,如果用c语言弄 需要用字符串数组,而用python 可以存储的下,无需考虑那么多,将数乘以2倍后把他变成列表,设原来的数为a,乘积后的数为b,将a,b都转化为列表,遍历b,只要b的元素是在a中的 a,就删除那一元素,再用一个标志变量,如果b有的元素,a没有用标志变量标记,那yes的条件就是a最后是空,并且,变量没被标记(改变过),其余为no。

2024-03-03 18:59:25 194

原创 自测-3 数组元素循环右移问题

解题思路:这种循环题有一个经典的O(N)解法,就是前后对称交换,举例,我要循环右移 123456 的后俩个,我们的算法是将56,变成65,把前面的1234变成4321,然后将432165 对称交换就变成了561234。

2024-03-02 17:03:47 247

原创 自测-2 素数对猜想

(2)核心思想是用最小质因数去筛选,我们另设一个列表,这个列表是用来存放已经筛选号的素数的,之后我们去遍历元素从2一直到n这些数,当这些数的标志是素数时纳入素数表中,无论他是与不是素数都与前面已经加入的素数去乘积,将这些乘积标志为非负数,但要注意不是一直与前面所有的素数相乘,而是要判断何时不要继续了,本题用python写不能用一般的算法去求会超时,应该采用欧拉素数筛选法去求,算法复杂度为O(n)比其他的算法优秀的多,(1)我们安排一个数组或者列表表示某个数是否为素数,最开始假设所有数都是素数。

2024-03-02 16:40:12 242

原创 自测-1 打印沙漏

【代码】自测-1 打印沙漏。

2024-03-01 22:31:14 325

原创 多项式问题

对于一个多项式a0​x0a1​x1a2​x2......an​xn求解这样一个多项式。

2024-03-01 19:09:33 591

原创 全排列算法

我们看一下能不能找到一种方法缩小规模,1,2,3,4 是不是就是1 加上后面的234 的全排列 然后2 加1 3 4 的全排列 然后 3 加 1 2 4 的全排列,同理一直到最后只有一个的时候输出就行。那么我们给定一个数组如何实现全排列呢,假设你知道[1,2,3,4]这四个数,难道要4层循环去写吗,肯定不行,排列函数要具备通用性,下次来3个元素的数组,循环也改不成3层的呀。只有一个元素的时候就该递归出口了,所以元素都走完了就差输出了。例如 1,2,3,4 总共有多少种可能,初中学过。

2024-03-01 15:56:53 333

原创 简单排列组合题(python版)

我们粗略看一下这个题既然我们要组成三位数,那我们就循环3层每一层出一个数,并且if语句判断,互相不同即可(想对比较粗糙的算法,而且可塑性差,那要是问俩位数呢,四位数呢,不易改变)首先这个函数参数 肯定得用一个列表,另外得有一个b列表 这个列表相对应元素用了还是没用过,还有一个count记录是否已经达到要的个数了。我们深刻的想一想我们可不可以实现这样的一个函数,组合的元素我们自己随意提供,几位数排列也可以做出参数方便传递,那这样就很灵活了。

2024-02-29 22:39:51 398

原创 猴子吃桃问题(python版)

以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。我们从后往前想,最后一次不就剩1个了吗,那么前一天剩多少个 和容易想到2*1+2,那么我们倒序想 就是。让我们算最终解法:复杂度最低的算法,我们干嘛不寻找规律完全解出这个通项岂不美哉。猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。我们可以使用递归的办法,每次减小天数,天数为1的时候是1。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。第10天剩一个那总共有1534。由上面我们推导出了公式。

2024-02-29 14:57:18 5069

原创 计算机科学与导论 第三章数据存储(第二部分存储实数)

它定义了该数的精度。如果在数字的左边(原书学错了)插入多余的零,这个值将会改变,而在一个真正的整数中,如果在数字的左边插入多余的零,这个值不会改变。相反音频是不可数的,音频是随着时间变化的实体,我们测量单位时间声音的密度。当我们讨论用计算机内存存储声音时,我们的意思是存储一个音频信号的密度,例如,每隔一段时间来自麦克风的信号。但是,为每隔样本使用无符号的数会更简便,量化指的是将样本的值截取为最接近的整数值的一种过程。尽管位模式的长度取决于符号的数量,但是它们的关系不是线性的,而是对数关系,数量位n需要。

2024-02-18 20:23:46 971

原创 计算机科学与导论 第三章数据存储(第一部分存储整数)

所有计算机外部的数据类型的数据都采用统一的数据表示法转换后存入计算机中,当数据从计算机输出时再还原回来。这种通用的格式为。

2024-02-16 19:18:18 620

原创 计算机科学与导论 第一章绪论和第二章数字系统

第一台通用的,完全电子计算机由约翰·莫克利 (John Mauchly)和约瑟夫·雷伯恩 (J. Presper Eckert)发明,这台计算机被称为ENIAC 他是1946年完成设计的,曾有误传ENIAC是第一台计算机,实际上,真正的第一台电子计算机是阿塔纳索夫-贝瑞计算机(Atanasoff–Berry Computer,简称ABC计算机)。这一时代还出现了计算机网络。b=16,S={0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F} 用数码k表示十六进制的最大值为。

2024-02-11 15:25:18 793

原创 python基础教程九 抽象四(函数参数终)

前面介绍了如何将参数收集到元组和字典当中,但同样的俩个运算符,也可以执行相反的操作。与收集参数相反的操作是。同时假设还有一个元组,其中包含俩个你要相加的数。这与前面执行的操作差不多是相反的:不是收集参数,而是参数。这是通过在调用函数时使用运算符*实现的。add(params)3这种做法也可以用于参数列表的一部分,条件是这部分位于参数列表的末尾。使用运算符*,可将字典中的值分配给关键字参数,例如如果在定义和调用函数时都使用*或**,将只传递元组和字典。因此还不如不使用它们。

2024-02-09 12:02:17 825

原创 python基础教程九 抽象三(函数参数续)

前面使用的都是,因为它们的位置至关重要。本节介绍的技巧让你能完全的忽略位置。要熟悉这种技巧需要一段时间,但随着程序规模的增大,你很快就发现它很有用。这俩个函数的功能完全相同,只是参数的排列顺序相反。有时候,参数的排列顺序可能难以记住,尤其是参数很多时。为了简化调用工作,可指定参数的。在这里,参数的顺序无关紧要。不过参数名称很重要。像这样使用名称指定的参数称为,主要的有点是有助于澄清各个参数的作用。然而,关键字参数的最大的优点在于,可以指定默认值。像这样给参数指定默认值后,调用函数时可不提供它!

2024-01-23 22:48:31 572

原创 python基础教程九 抽象二(函数参数)

定义函数时,你可能心存疑虑,参数的值是怎么来的呢?在def语句中,位于函数名后面的变量通常称为形式参数,在调用函数时提供的值称为实参,但在本书不做严格区分。

2024-01-22 16:57:13 415

原创 python基础教程九 抽象一(函数初步)

函数执行特定的操作并返回一个值,你可以调用它.一般而言,要判断某个对象是否可调用,可用内置函数callable.>>> x=1FalseTrue>>>函数是结构化编程的核心。那么如何定义函数呢?使用def(表示定义函数)运行这些代码后,将有一个hello的新函数。它返回一个字符串。那我们编写一个返回斐波那契数列的列表函数。s=[0,1]return s执行这些代码后,解释器就知道如何计算斐波那契数了,现在你不用再关心这些细节了,而只需调用fib.

2024-01-17 22:28:53 398

原创 python基础教程八(循环完)

本章最后我们介绍另外三条语句:pass,del,exec。

2024-01-15 17:28:35 398

原创 python基础教程八(循环二)

如果你运行这个程序,它将打印Didn’t find it ,因为正如你前面讨论break时看到的,小于100的最大平方值为81.无论是for循环还是while循环中,continue,break,else子句。但是上述的需要遍历所有才能找到,假设如果有1000男和1000个女那得比1000*1000次,效率太慢了,那我们可以设定一个女孩的字典,首字母和名字作为键值对,然后遍历男孩方面,而女孩只要找男孩的首字母就可以了。列表推导式一种从其他列表创建列表的方式,类似于数学中的集合推导。

2024-01-15 16:05:56 612

原创 python基础教程八(循环1)

为避免多次重复的代码,我们会用到循环执行语句while循环的结构非常简单只要条件满足就一直循环直到,条件不满足为止。结果就是最简单的输出1-100的数字while循环适合那种没有确定次数,变化规律不是很明显,只是知道何时应该停止的循环。如果知道具体次数那就更适合下面这种循环for。

2024-01-08 16:05:55 1076

原创 PAT 乙级 1049 数列的片段和

给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段。例如,给定数列 { 0.1, 0.2, 0.3, 0.4 },我们有 (0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4) (0.2) (0.2, 0.3) (0.2, 0.3, 0.4) (0.3) (0.3, 0.4) (0.4) 这 10 个片段。的正整数 N,表示数列中数的个数,第二行给出 N 个不超过 1.0 的正数,是数列中的数,其间以一个空格分隔。现在能力不够以后在想吧。

2024-01-08 12:06:43 476

原创 PAT 乙级 1076 Wifi密码

解题思路:首先这题看着复杂实际很简单,每题就一个正确的我们把他找出来就可以,之后利用和’A’ 相减加一 求出数值,输出即可。python代码更容易。

2024-01-07 23:16:33 726

原创 PAT 乙级 1056 组合数的和

给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字。要求所有可能组合出来的 2 位数字的和。例如给定 2、5、8,则可以组合出:25、28、52、58、82、85,它们的和为330。输入在一行中先给出 N(1 < N < 10),随后给出 N 个不同的非 0 个位数字。输出所有可能组合出来的2位数字的和。

2024-01-07 22:49:14 450

原创 python基础教程七(布尔类型,条件语句,断言)

你要将is 用于数和字符串等不可变的基本值。鉴于python在内部处理这些对象的方式,这样做的结果不可预测(基于Python 3.10.10 测试 数值和字符串 上 is和,==基本相同),例如当and左侧表达式已经为假的时候,右边就不看了,or也是类似,如果你有在判断条件上写赋值语句的习惯,一定要注意,还是建议尽量不要过于利用短路,哪怕要多写条件语句。,就执行后续代码块(这里是一条print语句);如果条件为假,就不执行(你应该已经猜到了)要确定俩个对象相等,可使用比较运算符,用俩个等号表示。

2024-01-06 19:52:22 644

原创 python基础教程七(print参数,import,序列解包,赋值,缩进等)

在学习if条件句以前我们先说点别的。

2024-01-06 16:02:41 958

原创 python基础教程六(字典方法)

与其他内置类型一样,字典也有方法。字典的方法很有用,但其使用频率可能不高。

2024-01-05 17:24:00 1029

原创 python基础教程五(字典概念和基本操作)

需要将一些列值组合成数据结构并通过编号来访问各个值时,列表很有用。本章介绍一种通过名称来访问各个值的数据结构。这种数据结构称为映射。字典是python中唯一的内置映射类型,其中的值不按顺序排列,而是存储在键下。键可能是数,字符串,元组(不可改变的)字典的名称指出了其用途,图书适合从头到尾的顺序阅读如果你愿意可快速翻到任何一页,这有点像列表。字典(日常生活中的字典和python字典)旨在让你能够轻松找到特定的单词(键),以获悉其定义(值)。

2024-01-05 15:43:35 380

原创 python基础教程四(字符串相关常用方法)

请注意,起点和终点值(第二个参数,和第三个参数)指定的搜索范围包含起点,但不包含终点,这是python惯用的做法。如果找到,就返回子串的第一个字符的索引,否则返回-1.方法strip将字符串开头和末尾的空白(但不包含中间的空白)删除,并返回删除后的结果。find可以有三个参数,第二个参数和第三个参数分别表示搜索的起点和终点,都可以省略。split是一个非常重要的字符串方法,其作用与join相反,用于将字符串拆分成序列。join是一个非常重要的字符串方法,其作用和split相反,用于合并序列的元素。

2024-01-04 22:33:09 447

原创 python基础教程三(元组和字符串格式化)

与列表一样,元组也是序列,唯一的差别在于元组是不可修改的,元组语法很简单,只要将一些值用逗号分隔,就能自动创建一个元组。函数tuple的工作原理和list很像:它将一个序列作为参数,并将其转换为元组。如果参数已经是元组,就返回它前面说过,字符串属于序列,但是字符串是不可改变的,因此所有的元素赋值,和切片赋值都是非法的1. 设置字符串的格式:精简版如果你是个python新手,不会用到所有的选项,因此这里介绍精简版主要的解决方案是使用字符串格式设置运算符-百分号。这个运算符的行为类似于c语言中的经典函数pri

2024-01-04 16:44:42 1734

原创 python基础教程二(列表相关知识)

列表类似一个可以改变的数组,里边的类型不同于c,c要求类型必须相同,列表的元素任意类型都可以,最重要的是列表可以改变,和元组和字符串最大区别list函数:将别的序列元素变为列表类型因为字符串不能像列表一样被修改,所以根据字符串创建列表会很有用。list函数可以实现这一操作。ist函数适用于所有类型的序列,而不是只有字符串。删除元素:name[1,3]分片赋值: 列表元素可以改变所以可以实现分片插入分片赋值name。

2024-01-03 16:38:17 374

原创 python 基础教程一(序列的基础知识)

*float(x)**函数将整数转换成小数 例如float(1) 结果为1.0,包含一些数字字符串也可以转换。例如列表,每个元素有前后顺序,元组也是,字符串也是,字典不行,字典中没有前后顺序,集合也不可以。**ceil(x)**函数在math模块当中,作用是将给定的值转换成大于或等于它的最小整数。**int(x)**函数将小数转换为整数,一些可转换的数字序列也是可以的,例如数字字符串。用数字x乘以一个序列会生成新的序列,而在新的序列当中,原来的序列被重复X次。**sqrt(x)**函数求平方根。

2024-01-03 16:05:39 340

原创 PAT 乙级 1057 数零壹

的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一下 N 的二进制表示中有多少 0、多少 1。例如给定字符串 PAT (Basic),其字母序号之和为:16+1+20+2+1+19+9+3=71,而 71 的二进制是 1000111,即有 3 个 0、4 个 1。在一行中先后输出 0 的个数和 1 的个数,其间以空格分隔。注意:若字符串中不存在字母,则视为 N 不存在,也就没有 0 和 1。给定一串长度不超过 10。

2024-01-02 22:40:45 363

原创 PAT 乙级 1043 输出PATest

解题思路:对于c来说hash函数求出各个符号的数量,不为0时就输出即可,python利用字符串count函数就可以了。

2024-01-02 22:37:39 377

原创 PAT乙级1045 快速排序

解题思路:这题我认为时间给的比较仓促,还是要找最优解算法,题目很清晰就是快排的一次划分,那我们就按照定义来看,主元必须是左边小于它右边大于它的,那我们一次循环找到左边最大的和它比,再另一次循环找到右边最小的和它比,满足左边最大的小于等于它,同时右边最小的也大于等于它,它不就是主元嘛。著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边。尽管 2 的右边元素都比它大,但其左边的 3 比它大,所以它不能是主元;

2024-01-01 22:40:52 1126

空空如也

空空如也

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

TA关注的人

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