- 博客(56)
- 收藏
- 关注
原创 深度学习 Tensorflow 与 Pytorch 环境搭建
查看电脑 GPU 型号win+R 打开 cmd,输入 nvidia-smi 运行其对应的 CUDA 版本号为 12.6,那么12.6版本及其之前版本的 CUDA都是可以安装的。根据电脑 GPU 的型号,从官网 https://developer.nivdia.com/cuda-gpus 确认你电脑 GPU 所支持对应的 CUDA 和CUDNN 版本号。网上有许多安装方法大同小异,这里不再赘述,这里我选择的如下:CUDA版本号为11.1;CUDNN选择历史版本(;
2024-09-26 13:35:23 954
原创 C语言-Graham扫描算法-凸包问题
重庆理工大学(CQUT)某大学ACM集训队,不久前向学校申请了一块空地,成为自己的果园。全体队员兴高采烈的策划方案,种植了大批果树,有梨树、桃树、香蕉……。后来,发现有些坏蛋,他们暗地里偷摘果园的果子,被ACM集训队队员发现了。因此,大家商量解决办法,有人提出:修筑一圈篱笆,把果园围起来,但是由于我们的经费有限,必须尽量节省资金,所以,我们要找出一种最合理的方案。由于每道篱笆,无论长度多长,都是同等价钱。所以,大家希望设计出来的修筑一圈篱笆的方案所花费的资金最少。
2024-01-12 15:33:12 997 1
原创 C语言-贪心、回溯算法-快递终端送货分配系统
重庆理工大学(CQUT)时间复杂度为O(n),内层有两个for,第一个for为挑选未被访问的顶点的最短距离,时间复杂度为O(n),第二个for为在与选中顶点有直接路径的顶点中对比距离是否需要更新,时间复杂度为O(n),所以总的时间复杂度为O(n^2)。从result数组选择最小值,则该值就是源点s到该值对应的顶点的最短路径,并且把该点加入然后,新加入的顶点是否可以到达其他顶点并且通过该顶点到达其他点的路径长度是否比源点直接到达短,如果是,那么就替换这些顶点在result中的值。
2024-01-12 14:59:37 775
原创 Python-Graham扫描算法-凸包问题
重庆理工大学(CQUT)每棵果树分别用二维坐标来表示,进行定位。选用了Graham扫描算法,根据之前学过的数学原理我们知道y值最小的坐标点一定在构成的凸包上,首先找到y坐标的点为枢纽点(如果有多个点拥有最小 y 坐标,则选择最左边的点),将其余坐标点与枢纽点的极角(与x轴正方向的夹角)从小到大排序(如果两点有相同的极角,则将距离枢纽点较远的排在前面),然后用一个栈,将枢纽点和排好序的第一个点入栈,依次将剩余的点与栈顶的两点做叉乘比较,最后输出比较后的凸包上的点。
2024-01-12 14:24:47 533
原创 C语言-动态规划-最小路径和
重庆理工大学(CQUT)请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。因为路径 1→3→1→1→1 的总和最小。一个机器人每次只能向下或者向右移动一步。给定一个包含非负整数的。
2024-01-11 17:08:42 632
原创 C语言-动态规划-零钱兑换
重庆理工大学(CQUT)如果没有任何一种硬币组合能组成总金额,返回。表示不同面额的硬币;你可以认为每种硬币的数量是无限的。计算并返回可以凑成总金额所需的。
2024-01-11 17:02:04 763
原创 C语言-贪心算法-背包问题-珠子放入背包
重庆理工大学(CQUT)分配方案 [1,3],[5,1] 得到最大得分 (1+3) + (5+1) = 10。分配方案 [1],[3,5,1] 得到最小得分 (1+1) + (3+1) = 6。所以差值为 10 - 6 = 4。唯一的分配方案为 [1],[3]。请你按照如下规则将所有的珠子放进。最大最小得分相等,所以返回 0。请你返回所有分配方案中,
2024-01-11 16:51:24 604
原创 C语言-回溯法-地图着色问题
重庆理工大学(CQUT)回溯法的基本思想是:在解空间中,按深度优先策略,从根结点出发搜索,搜索至任一节点时,先判断该节点是否包含问题的解。否则,进入该子树,继续按照深度优先策略搜索。在最坏情况下,算法需要遍历所有可能的颜色方案,所以时间复杂度为 O(k^N),其中 k 是可用的颜色数,N 是省份节点的数量。本题抽象出来其实就是着色问题:已知一个图,要求给图上每个点上色,并保证该点的颜色与它的邻接点的颜色都不相同。
2024-01-11 16:31:28 2607 1
原创 Python-用中国地图验证四色定理
重庆理工大学(CQUT)中国地图链接网址 http://datav.aliyun.com/tools/atlas/index.html。本题抽象出来其实就是着色问题:已知一个图,要求给图上每个点上色,并保证该点的颜色与它的邻接点的颜色都不相同。(1)首先需要安装对应的库。如果代码报错,很可能是因为没有安装相关的库,根据报错提示,安装对应的库即可。
2024-01-11 16:06:10 1055 1
原创 C语言-贪心算法-分发糖果
重庆理工大学(CQUT)你可以分别给第一个、第二个、第三个孩子分发 2、1、2 颗糖果。你可以分别给第一个、第二个、第三个孩子分发 1、2、1 颗糖果。第三个孩子只得到 1 颗糖果,这满足题面中的两个条件。请你给每个孩子分发糖果,计算并返回需要准备的。表示每个孩子的评分。
2024-01-11 15:21:56 668
原创 C语言-算法分析与设计-实现n皇后算法
重庆理工大学(CQUT)N是皇后的数量。对于每一个皇后,都有N个可能的放置位置,并且需要遍历所有可能的放置方式。这意味着,随着皇后数量n的增加,运行时间也会急剧增加。这是因为随着n的增加,需要检查的放置方式也大大增加,导致算法的运行时间快速增长。这是因为n皇后问题是一个NP-hard问题,其解决方案需要遍历所有可能的皇后放置方式,而这是一个指数级的搜索空间。设计一个递归函数,每一层递归遍历每一列,逐个尝试放置皇后,并在放置后检查是否与已有皇后位置冲突。运行时间和皇后数量n的关系是一个典型的指数级别增长关系。
2023-12-18 19:12:46 499
原创 C语言-算法分析与设计-用Kruskal 算法实现最小生成树
重庆理工大学(CQUT)很难准确地预测Kruskal算法的运行时间与节点数之间的关系。一般来说,随着节点数的增加,Kruskal算法的运行时间也会相应地增加。这是因为随着节点数的增加,边的数量也会增加,从而导致排序和查找环的时间增加。为了优化算法的时间复杂度,可以使用一些技巧,例如使用优先队列(最小堆)来存储待检查的边,这样可以减少不必要的遍历。在理论上,Kruskal算法的时间复杂度是O(ElogE),其中E是边的数量。这是因为算法需要对所有的边进行排序,所以时间复杂度与边的数量和对边的排序时间有关。
2023-12-18 19:06:43 472
原创 C语言-算法分析与设计-实现0-1背包问题的递归、备忘录、动态规划的比较
重庆理工大学(CQUT)递归方法,在处理大规模的背包问题时,由于递归方法涉及大量的重复计算,很容易导致栈溢出(Stack Overflow)或者耗费大量的时间。动态规划方法的曲线预期是最低的,其次是备忘录方法,递归方法的曲线则应该是最高的。总的来说,动态规划通常是这三种算法中最快的,其次是备忘录方法,而纯递归方法由于重复计算等问题通常是最慢的。由于n=100,递归算法耗时太久,产生栈堆积,故将n改为30,30小于100,运行时间为0.000237s却比前面两种算法耗时更久,可见递归算法在此很不实用。
2023-12-18 18:59:51 675
原创 C语言-算法分析与设计-最长公共子序列递归备忘录、动态规划算法
重庆理工大学(CQUT)虽然都可以解决最长公共子序列(Longest Common Subsequence,LCS)问题,并且时间复杂度都是O(mn),但动态规划算法通常在实际运行中更快。在解决最长公共子序列问题时,备忘录算法会存储每个子问题的解,并在需要时查找备忘录以获取解。虽然备忘录算法也可以避免重复计算相同的子问题,但它需要额外的存储空间来存储备忘录,并且在查找备忘录时可能会有一定的开销。动态规划算法的核心思想是将问题分解为子问题,并保存子问题的解,以便在需要时可以重复使用它们,而不是重新计算。
2023-12-18 18:08:17 645
原创 C语言-算法分析与设计-插入、合并、快速排序运行时间与排序元素个数的统计比较
重庆理工大学(CQUT)数组的大小在编译时就需要已知,它不能是一个运行时才能确定的变量。在你的代码中,你试图使用一个运行时确定的变量n来声明一个数组arr,这是不合法的。使用C语言进行编程时遇到了一个错误:C2131,这个错误通常表示在声明一个数组时,使用了一个非常大的数值作为其大小,而这个值并不是一个编译时常量。当n比较小时,快速排序与合并排序用时几乎相同。当n逐渐增大到3000时,快速排序比合并排序略微快一点,插入排序用时显著增加。(3)利用算法采用的设计方法,时间复杂度等分析得到该结果的原因。
2023-12-18 17:59:24 389
原创 C语言-算法分析与设计-插入排序与合并排序比较
重庆理工大学(CQUT)插入排序和归并排序函数处理的是同一个列表(arr),因此,当执行插入排序后,列表已经被排序,这使得归并排序变得非常快,因为它处理的是一个已经部分排序的列表。在一般情况下,归并排序的效率更高,因为它的时间复杂度为O(nlogn),而直接插入排序的时间复杂度为O(n^2)。为了解决这个问题,可以为两种排序算法分别生成不同的随机列表,或者在每次运行排序算法之前,都重新打乱列表的顺序。这样,每次运行两种算法时,列表的顺序都是一样的,结果可以更准确地比较两种算法的效率。由可视化分析可以得出,
2023-12-11 15:54:23 438
原创 C语言-算法分析与设计-实现插入排序的递归与非递归算法
重庆理工大学(CQUT)对于插入排序的递归和非递归实现,其时间复杂度通常都是O(n^2),其中n是要排序的数的数量。这是因为插入排序每次只能将一个数插入到已排序的部分中,需要对所有数进行一次遍历,而每次插入都需要进行比较和移动操作,因此总的时间复杂度是O(n^2)。i / 100 和 i / 10 这样的估计方式并不能准确地反映出程序的执行时间,因为程序的执行时间并不是简单地与输入数据的大小成线性关系。函数执行时间的测量,time.time()获取的是当前的系统时间,而并非程序执行的CPU时间。
2023-12-11 15:46:40 470
原创 C语言-算法分析与设计-斐波那契数列-递归与迭代算法
重庆理工大学(CQUT)迭代算法的时间效率更高,迭代算法的执行时间随着递归深度的增加而增加的程度要远远低于递归算法。因此,迭代算法的时间复杂度相对较低,通常为O(n),其中n是要求的斐波那契数列的项数。当数据量很大的时候 n的优势将会比2^n越来越大,由计算可得,当我们令n=15的时候,n的算法要比2^n的算法快32768倍,就是如果我们要处理一个数据集,用n的算法要处理1天的话,用2^n的算法将要处理32768天,这就基本相当于是89年。迭代算法的时间复杂度较低,具体为O(n),其中n是斐波那契数列的长度
2023-12-10 15:59:45 890
原创 python-task3-math库和string练习
重庆理工大学(CQUT) 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果。# 2) 判断 name 变量对应的值是否以 "al" 开头,并输出结果。# 3) 判断 name 变量对应的值是否以 "X" 结尾,并输出结果。# 5) 将 name 变量对应的值根据 “l” 分割,并输出结果。# 1) 移除 name 变量对应的值两边的空格,并输出结果。# 10) 请输出 name 变量对应的值的后 2 个字符?# 8) 请输出 name 变量对应的值的第 2 个字符?
2023-11-21 14:34:47 78 1
原创 python-task2-变量,常量,类型和表达式
重庆理工大学(CQUT)数据类型:数字型Number 字符串str 元组tuple 字典dict 集合set 列表list。Python的保留关键字不可以作为标识符,如def、for、and、else、if等。标识符的第一个字符必须是字母、下划线,其后的字符可以是字母、下划线或数字。数字型:整型int,浮点型float,布尔型bool,复数complex。
2023-11-21 14:04:26 133 1
原创 python-task1-安装Python和jupyter,完成helloword和基本输入输出语句
重庆理工大学(CQUT)双击exe文件进行安装,并按照圈中区域进行设置,切记要勾选Add Python 3.9 PATH复选框,然后再点击Customize installation进入到下一步。同时按住win键和R键,点击确定,进入命令行;(1)首先进入网站下载:(https://www.python.org/downloads/),目前win 10最新版本是3.11.5。step1:同时按住win键和R键,输入cmd 回车,启动命令窗口。step2:命令窗口输入回车。
2023-11-21 13:43:32 182 1
原创 python-task-09 综合练习
重庆理工大学(CQUT)返回的是一个枚举对象(enumerate object)它生成一个 (index, item) 元组序列,index 是从开始下标开始的整数,item 是数据对象中每个元素的迭代器对象。如果将 f = {1:10, 2:20} 改为 f = {1:1, 2:1},那么函数将使用新的字典来计算斐波那契数列。在这种情况下,函数将返回第一项和第二项的值,它们都是 1。它用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
2023-11-16 09:00:00 447 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人