算法导论——阅读笔记 + 书内代码/课后习题C++实现
题解参考网站:https://walkccc.github.io/CLRS/
Table of Contents
- 第一部分 基础知识
- 第1章 算法在计算中的作用
- 第2章 算法基础
- 插入排序
- 伪代码
- C 实现
- 插入排序分析——Θ(n2)
- 2.1-4 考虑把两个n位二进制整数加起来的问题,A B=C, C为n 1元数组。
- 分析算法
- 设计算法
- 分治方法
- 归并排序
- 伪代码
- C 实现
- 归并算法分析——Θ(n lgn)
- 2.3-5 二分查找迭代和递归伪代码——Θ(lgn)
- 插入排序
- 第3章 函数的增长
- 第4章 分治策略
- 最大子数组问题
- 使用分治策略求解——Θ(n lgn)
- 求跨越中点最大子数组伪代码
- 分治思想求数组最大子数组伪代码
- 4.1-5 最大子数组的迭代版本 伪代码实现——Θ(n)
- 最大子数组问题 C 实现(分治 迭代)
- 使用分治策略求解——Θ(n lgn)
- 矩阵乘法的Strassen算法
- 常规的矩阵乘法:
- 一种简单的分治算法
- Strassen方法
- 最大子数组问题
第一部分 基础知识
第1章 算法在计算中的作用
- 算法简单来说就是能够正确将某一输入转换成特定输出的一系列计算步骤。
排序问题形式定义:
输入: n个数的一个序列<a1, a2, …, an>。
输出: 输入序列的一个排列<a1’, a2’, …, an’>,满足a1’ <= a2’ <= … <= an’。
影响因素: 项数n、预先排序的程度、项值的限制、计算机的体系结构、存储设备的种类(主存、磁盘或者磁带)
第2章 算法基础
插入排序
问题类型如上面引用的排序问题的形式定义,将待排序的数称为关键词。
- 排序算法基本思想: 从待排序数组中拿出一个数(关键词),将该关键词跟已排序数组中的数进行比较,将其插入适当的位置。
伪代码
//按非降序排序
INSERTION-SORT(A)for j = 2 to A.lengthkey = A[j]//Insert A[j] into the sorted sequence A[1..j-1]i = j-1while i>0 and A[i]>key//后移A[i+1] = A[i]i = i - 1//the key 入位A[i+1] = key
C++ 实现
#include <iostream>
#include <vector>
using namespace std;void InsertionSort(vector<int> &A)
{int n = A.size();int key;for(int j=1; j<n; ++j){key = A[j];int i = j-1;while(i>=0 && A[i]>key){A[i+1] = A[i];--i;}A[i+1] = key;}
}int main()
{int n;cout << "Input the size of A:\n";cin >> n;vector<int> A(n);cout << "Input the n numbers of A:\n";for(int i=0; i<n; ++i)cin >> A[i];InsertionSort(A);cout << "After InsertionSort, the sequence of A:\n";for(int i=0; i<n; ++i)cout << A[i] << " ";return 0;
}
运行结果
插入排序分析——Θ(n2)
循环不变式与插入排序的正确性
循环不变式的证明
- 初始化: 循环的第一次迭代前,循环不变式为真。
- 保持: 如果循环的某次迭代前循环不变式为真,那么下次迭代前循环不变式仍为真。
- 终止: 在循环终止时,不变式为我们提供一个有助于证明算法正确性的性质。
- 插入排序的证明:
初始化: 证明第一次迭代(j=2)前,循环不变式成立。此时已排序数组A[1…j-1]仅由A[1]组成,该数组当然满足已排序的性质,即第一次循环迭代前循环不变式成立。
保持: 证明每次迭代保持循环不变式。在第j次循环迭代前,A[1…j-1]为已排序序列,此为真,当第j次循环迭代后(第j+1次循环迭代前)A[j]已经通过while语句找到了在A[1…j-1]中的恰当位置,并通过后移插入到合适位置,即A[1…j]为已排序序列,循环不变式成立。
终止: for循环终止条件是 j>A.length 即 j = n+1, 由循环不变式得,第n+1次循环迭代前,A[1…n]为已排序序列,即整个数组已被排序,插入排序算法正确。
2.1-4 考虑把两个n位二进制整数加起来的问题,A+B=C, C为n+1元数组。
//伪代码实现
ADD_BINARY(A, B)C = new int[A.length + 1]carry = 0for i = 1 to A.lengthC[i] = (A[i] + B[i] + carry) % 2carry = (A[i] + B[i] + carry) / 2C[i] = carryreturn C
分析算法
RAM模型 —— 包含计算机中的常见指令:算术指令(如加法、减法、乘法、除法、取余、向下取整、向上取整)、数据移动指令(装入、存储、复制)和控制指令(条件与无条件转换、子程序调用与返回。每个这种指令所需时间为常量。
一般考虑最坏时间复杂度Θ记号。
设计算法
- 插入排序算法使用了增量方法:在排序子数组A[1…j-1]后,将单个元素A[j]插入子数组的适当位置,产生排序号的子数组A[1…j]
分治方法
分治法的思想:将原问题分解为几个规模较小但类似于原问题的子问题,递归地求解这些子问题,然后再合并这些子问题的解来建立原问题的解。
分治模式再每层递归的三个步骤:
- 分解原问题为若干子问题,为原问题规模较小的实例。
- 解决这些子问题,递归地求解各个子问题。
- 合并这些子问题的解成原问题的解。
归并排序
伪代码
//合并操作,p<=q<r, A[p..q]与A[q+1..r]均已排序
MERGE(A, p, q, r)n1 = q - p + 1n2 = r - qlet L[1..n1+1] and R[1..n2+1] be new arraysfor i = 1 to n1L[i] = A[p+i-1]for j = 1 to n2R[j] = A[q+j]//哨兵L[n1+1] = ∞R[n2+1] = ∞i = 1j = 1for k = p to rif L[i] <= R[j]A[k] = L[i]i = i + 1elseA[k] = R[j]j = j + 1
MERGE-SORT(A, p, r)//若p >= r 表示子数组中最多有一个元素,即已经排序好if p < rq = floor( (p+r) / 2 )//向下取整MERGE-SORT(A, p, q)MERGE-SORT(A, q+1, r)MERGE(A, p, q, r)
C++ 实现
#include <iostream>
#include <vector>
using namespace std;
const int MAX = 1e6;
void Merge(vector<int> &A, int p, int q, int r)
{int n1 = q-p+1, n2 = r-q;vector<int> L(n1+1);vector<int> R(n2+1);for(int i=0; i<n1; ++i)L[i] = A[p+i];for(int j=0; j<n2; ++j)R[j] = A[q+j+1];L[n1] = R[n2] = MAX;int i = 0, j = 0;for(int k=p; k<=r; ++k){if(L[i] <= R[j])A[k] = L[i++];elseA[k] = R[j++];}
}
void MergeSort(vector<int> &A, int p, int r)
{if(p < r){int q = (p+r) / 2;MergeSort(A, p, q);MergeSort(A, q+1, r);Merge(A, p, q, r);}
}int main()
{int n;cout << "Input the size of A:\n";cin >> n;vector<int> A(n);cout << "Input the n numbers of A:\n";for(int i=0; i<n; ++i)cin >> A[i];MergeSort(A, 0, n-1);cout << "After MergeSort, the sequence of A:\n";for(int i=0; i<n; ++i)cout << A[i] << " ";return 0;
}
运行结果
归并算法分析——Θ(n lgn)
循环不变式: 再最后一个for循环的每次迭代时,子数组A[p…k-1]按照从小到大顺序包含L[1…n1+1]和R[1…n2+1]中的k-p个最小元素。进而,L[i]和R[j]是各自所在数组中未被复制回数组A的最小元素。
证明:
- 初始化:循环的第一次迭代前,k = p, 所以子数组A[p…k-1]为空,整个空的子数组包含L和R的 k-p = 0个最小元素,且i = j = 1, L[i], R[j]都是各自数组中未被复制回数组A的最小元素。循环不变式成立
- 保持:假设L[i] <= R[j]. 此时L[i] 为未被复制回A的最小元素,A[p…k-1]包含k-p个最小元素,L[i]复制后,子数组A[p…k]将包含k-p+1个最小元素。更新k和i后为下次迭代重新建立了循环不变式
- 终止:k = r + 1。由循环不变式,子数组A[p…k-1]即A[p…r]是按从小到大的循序包含L和R中k-p = r-p+1个最小元素。除了两个∞的哨兵外所有元素均复制回A中。算法正确
2.3-5 二分查找迭代和递归伪代码——Θ(lgn)
在A[1…n]中找元素v,没有返回NIL
- 迭代版本
ITERATIVE-BINARY-SEARCH(A, v, low, high)while(low <= hight)mid = floor((low + high)/2)if v == A[mid]return midelse if v > A[mid]low = mid + 1elsehigh = mid - 1return NIL
- 递归版本
RECURISIVE-BINARY-SEARCH(A, v, low, high)if low > highreturn NILmid = floor((low + high)/2)if v == A[mid]return midelse if v > A[mid]return RECURISIVE-BINARY-SEARCH(A, v, mid+1, high)elsereturn RECURISIVE-BINARY-SEARCH(A, v, low, mid-1)
第3章 函数的增长
Θ: 渐近紧确界; O:渐近上界;Ω:渐近下界
f(n) = O(g(n)) 类似于 a<=b
f(n) = Ω(g(n)) 类似于 a>=b
f(n) = Θ(g(n)) 类似于 a=b
f(n) = o(g(n)) 类似于 a<b
f(n) = ω(g(n)) 类似于 a>b
第4章 分治策略
最大子数组问题
使用分治策略求解——Θ(n lgn)
分治求解子数组A[low…high]的最大子数组A[i…j],满足 low <= i<= j <= high。若将A[low…high] 二分,取 mid = floor((low+high)/2),那么i, j 的位置有三种情况:
- 完全位于A[low…mid]中,low <= i <= j <= mid
- 完全位于A[mid+1…high]中,mid+1 <= i <= j <= high
- 跨越了中点mid,low <= i <= mid < j <= high
而求跨越中点的最大子数组,等于A[i…mid] + A[mid+1…j]
求跨越中点最大子数组伪代码
- 线性时间内完成Θ(n)
FIND-MAX-CROSSING-SUBARRAY(A, low, mid, high)left_sum = -∞sum = 0for i = mid downto lowsum = sum + A[i]if sum > left_sumleft_sum = summax_left = iright_sum = -∞sum = 0fir j = mid+1 to highsum = sum + A[j]if sum > right_sumright_sum = summax_right = jreturn (max_left, max_right, left_sum+right_sum)
分治思想求数组最大子数组伪代码
FIND-MAXIMUM-SUBARRAY(A, low, high)if high == lowreturn (low, high, A[low]) // only one elementelse mid = floor((low+high)/2)(left_low, left_high, left_sum) = FIND-MAXIMUM-SUBARRAY(A, low, mid)(right_low, right_high, right_sum) = FIND-MAXIMUM-SUBARRAY(A, mid+1, high)(cross_low, cross_high, cross_sum) = FIND-MAX-CROSSING-SUBARRAY(A, low, mid, high)return max(left_sum, right_sum, cross_sum);
4.1-5 最大子数组的迭代版本 伪代码实现——Θ(n)
ITERATIVE-FIND-MAXIMUM-SUBARRAY(A)n = A.lengthmax_sum = -∞sum = -∞for j = 1 to ncurrent_high = jif sum > 0sum = sum + A[j]elsecurrent_low = jsum = A[j]if sum > max_summax_sum = sumlow = current_lowhigh = current_highreturn (low, high, max_sum)
最大子数组问题 C++ 实现(分治+迭代)
#include <iostream>
#include <vector>
using namespace std;
const int MIN = -1e6;
void Find_crosssubarray(vector<int> arr, int low, int mid, int high, int &cross_low, int &cross_high, int &cross_sum)
{int left_sum = MIN, sum = 0;for(int i=mid; i>=low; --i){sum += arr[i];if(sum > left_sum){left_sum = sum;cross_low = i;}}int right_sum = MIN;sum = 0;for(int i=mid+1; i<=high; ++i){sum += arr[i];if(sum > right_sum){right_sum = sum;cross_high = i;}}cross_sum = left_sum + right_sum;
}
void DCmaxsubarray(vector<int> arr, int low, int high, int& low1, int& high1, int& max1)
{if(low == high){low1 = high1 = low;max1 = arr[low];return;}else{int mid = (low+high) / 2;int left_low, right_low, cross_low, left_high, right_high, cross_high, left_sum, right_sum, cross_sum;DCmaxsubarray(arr, low, mid, left_low, left_high, left_sum);DCmaxsubarray(arr, mid+1, high, right_low, right_high, right_sum);Find_crosssubarray(arr, low, mid, high, cross_low, cross_high, cross_sum);if(left_sum >= right_sum && left_sum >= cross_sum){low1 = left_low;high1 = left_high;max1 = left_sum;}else if(right_sum >= left_sum && right_sum >= cross_sum){low1 = right_low;high1 = right_high;max1 = right_sum;}else{low1 = cross_low;high1 = cross_high;max1 = cross_sum;}}}
void Itemaxsubarray(vector<int> arr, int &low, int &high, int &max)
{int n = arr.size();int max_sum = MIN;int sum = MIN;int current_low, current_high;for(int i=0; i<n; ++i){current_high = i;if(sum > 0)sum += arr[i];else{current_low = i;sum = arr[i];}if(sum > max_sum){max_sum = sum;low = current_low;high = current_high;}}max = max_sum;
}
int main()
{cout << "Input the size of the array and the array:\n";int n;cin >> n;vector<int> arr(n);for(int i=0; i<n; ++i)cin >> arr[i];int low1, low2, high1, high2, max1, max2;cout << "The max subarray:\n";cout << "\nDivide and Conquer:\n";DCmaxsubarray(arr, 0, n-1, low1, high1, max1);cout << "low:" << low1 << "\t" << "high:" << high1 << "\t" << " max:" << max1;cout << "\nIterative:\n";Itemaxsubarray(arr, low2, high2, max2);cout << "low:" << low2 << "\t" << "high:" << high2 << "\t" << " max:" << max2;return 0;
}
运行结果
矩阵乘法的Strassen算法
常规的矩阵乘法:
C(n * n) = A(n * m) · B(m * n)
计算方法:
伪代码:
SQUARE-MATRIX-MULTIPLY(A, B)n = A.rowslet C be a new n*n matrixfor i = 1 to nfor j = 1 to ncij = 0for k = 1 to mcij = cij + aik * bkjreturn C
时间复杂度:O(n * n * m),一般情况下m与n相差无几,所以时间复杂度为O(n3)
一种简单的分治算法
为简化问题研究,这里我们假设A, B 均为方阵,即 m = n
假定n为2的幂,那么可以将n*n 分为4个n/2 * n/2 的子矩阵。计算C的公式变为
等价于
伪代码:
SQUARE-MATRIX-MULTIPLY-RECURSIVE(A, B)n = A.rowslet C be a new n*n matrixif n == 1c11 = a11 * b11else partition A, B, and C to 4 n/2 * n/2 matrixsC11 = SQUARE-MATRIX-MULTIPLY-RECURSIVE(A11, B11) + SQUARE-MATRIX-MULTIPLY-RECURSIVE(A12, B21)C12 = SQUARE-MATRIX-MULTIPLY-RECURSIVE(A11, B12) + SQUARE-MATRIX-MULTIPLY-RECURSIVE(A12, B22)C21 = SQUARE-MATRIX-MULTIPLY-RECURSIVE(A11, B11) + SQUARE-MATRIX-MULTIPLY-RECURSIVE(A22, B21)C22 = SQUARE-MATRIX-MULTIPLY-RECURSIVE(A12, B22) + SQUARE-MATRIX-MULTIPLY-RECURSIVE(A22, B22)return C
时间复杂度:
得出 T(n) = Θ(n3)
Strassen方法
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 背包九讲-背包问题代码奉上
01背包题目链接 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 输入格式 第一行两个整数,N,V,用空格隔开,分别表示物品数量…...
2024/4/29 1:26:57 - 如何获取nginx代理服务器的真实IP?
如何在nginx反向代理服务器获得真实IP?要实现这一操作,总共需要完成以下两个步骤的设置,下面我们一起来看看要怎么完成。 一、nginx.conf 配置 修改 Server location配置 增加 proxy_set_header X-Real-IP $remote_addr; #保留代理之前的真实客户端ip proxy_set_header X-Fo…...
2024/5/2 7:18:34 - 如何在scoped模式下修改elementUI的样式
问题: 在scoped的模式下,如何修改本页面上elementUi的样式 描述: 需求总是奇怪的,希望对elementUi的样式进行修改,但是又希望是在scoped模式下的 解决: 以输入框为例: 正常模式下,通过符号 >>> 重写样式 <style scoped> .el-input >>> .el-inp…...
2024/4/29 23:29:02 - 初尝Mybatis Generator
目录结构数据库generatorConfig.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-gener…...
2024/5/2 15:44:18 - 类的加载过程
刚刚走出校门的应届毕业生,如果在去寻求一份Java开发的工作时,你的面试官很有可能一边看着你的简历,一边漫不经心地问你:了解过Java类的加载过程吗? 这个时候你一定要注意了,虽然这是一个老生常谈的问题,但是这也是一个非常能够考验你Java功底的问题。 如果你答好了,这…...
2024/4/29 23:28:54 - 第三章 函数与数组
3.1 函数的定义 概念:实现特定功能的代码,可反复使用 语法:public static 返回值类型 函数名称(形参列表){ 函数体 } 位置:定义在类的内部,与主函数并列 说明:调用函数时,会优先执行函数内部代码,结束后返回至调用处,继续向下执行。当出现数据交换时,则需要引用参数,实参…...
2024/4/29 23:28:50 - 尚硅谷经典Java面试题(第1季)
课程连接: http://www.gulixueyuan.com/course/284 编程题:写一个Singleton示例Singleton:在Java中即指单例设计模式,它是软件开发中最常用的设计模式之一。单:唯一例:实例单例设计模式,即某个类在整个系统中只能有一个实例对象可被获取和使用的代码模式。例如:代表JVM运…...
2024/4/29 23:28:47 - 机器学习笔记24——单层决策树(decision stump)原理以及python实现
单层决策树1、概述2、构建 1、概述 \quad \quad单层决策树(decision stump),也称决策树桩,它是一种简单的决策树,通过给定的阈值,进行分类。如下图所示(仅对 petal length 进行了判断):从树(数据结构)的观点来看,它由根节点(root)与叶子节点(leaves)直接相连。…...
2024/5/2 20:51:58 - 博弈论
(南昌理工学院acm) 概念 博弈论是二人在平等的对局中各自利用对方的策略变换自己的对抗策略,达到取胜的目的。 博弈,具体的例子就是下棋,双方都考虑最有利于自已的步骤,但是最终必有一方输,一方赢。博弈的策略:参与者在行动之前所准备好的一套完整的行动方案,就是想好…...
2024/4/29 23:28:37 - angularJS 学习笔记
指令详解 指令定义 **指令:**可以简单的理解成在特定DOM元素上运行的函数,指令可以扩展这个元素的功能。 通过app.directive() 方法自定义指令,这个方法可以接受两个参数,第一个是指令名称,第二个是一个函数这个函数返回一个对象,在对象中定义详细的指令信息。 angular.m…...
2024/5/2 20:58:39 - 新硬盘 磁盘管理心得
步骤 分区 创建文件系统 挂载 注:持久挂载需添加开机项/etc/fstab) 1分区 fdisk 管理MBR分区 gdisk 管理GPT分区 parted 立马生效 不推荐使用 格式 gdisk device 查看系统上是否识别出的新增的硬盘:fdisk -l 查看内核是否已经识别新的分区 cat /proc/partations 2创…...
2024/4/29 23:28:29 - Security--07(短信验证码接口开发,以及重构逻辑)
目录1.开发短信验证的步骤2.开发短信验证码的接口,用来发送短信验证码 3.重构代码4.校验短信验证码并且登录5.重构逻辑1.开发短信验证的步骤1.开发生成短信验证码的接口,这个接口主要做三件事情,第一,生成随机的验证码,第二,将验证码存到Session中,第三,调用短信服务商…...
2024/5/2 19:42:03 - tftp服务器出现Transfer timed out.的解决方法
方法一:重启服务器 sudo service tftpd-hpa restart sudo /etc/init.d/xinetd reload sudo /etc/init.d/xinetd restart 方法二:卸载重新安装 sudo apt-get remove tftpd-hpa ;卸载tftp服务端sudo apt-get remove tftp-hpa ;卸载tftp客户端安装tftp服务器https://editor.…...
2024/4/29 23:28:23 - 【北理嵩天Python笔记】(笔记三)Python基础数据类型及作业练习
...
2024/4/29 23:28:21 - CSS 面试题
1. display: none; 与visibility: hidden; 的区别 display:none 不会占空间 visibility 继续占据空间,只是内容不可见 通过设置 visibility: visible;可以让子孙节点显式2. hack 原理及常用 原理:利用不同浏览器对 CSS 的支持和解析结果不一样编写针对特定浏览器…...
2024/4/29 23:28:14 - 字节跳动 服务端研发 2021秋招 一面+二面+三面面经
这是我首发在牛客网上的面经作者:ChouZixu 链接:https://www.nowcoder.com/discuss/477373?source_id=profile_create&channel=666 来源:牛客网一面 8.6 中午 13.00 时长65分钟自我介绍在华为干什么?流量控制和均衡为什么需要这个功能?采用的什么算法?和原来的算法相…...
2024/4/29 1:16:50 - 简谈引用以及inline函数
一、引用 1.引用概念:引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间 2.引用特性引用在定义时必须初始化 一个变量可以有多个引用 引用一旦引用一个实体,再不能引用其他实体3.引用和指针的区…...
2024/4/29 23:28:09 - Spring IoC的详细介绍
学习目的和要求 本文主要介绍Spring IoC的基本概念,Spring IoC容器以及依赖注入的类型等内容。通过本文的学习,读者能够了解Spring IoC容器,掌握Spring IoC的基本概念以及依赖注入的类型。 (1)Spring IoC的基本概念。 (2)Spring IoC容器。 (3)依赖注入的类型。 IoC(控…...
2024/4/29 23:28:06 - 飞桨百度架构师手把手带你零基础实践深度学习——手写数字识别 资源配置
使用GPU训练 使用GPU进行训练CPU:fluid.CPUPlace() GPU: fluid.CUDAPlace(0),四个GPU卡的编号0,1,2,3#仅前3行代码有所变化,在使用GPU时,可以将use_gpu变量设置成True use_gpu = False place = fluid.CUDAPlace(0) if use_gpu else fluid.CPUPlace()with fluid.dygraph.gu…...
2024/4/29 23:28:02 - Java变量与数据类型之:Java常量与变量—乐字节
大家好,又来给大家讲述Java基础知识。上次说了Java变量与数据类型之一:Java编程规范,关键字与标识符,这次将接着往下说,谈谈Java常量与变量。 PS:获取学习资源技术干货:lezijie007(暗号33) 常量与变量(必须牢牢掌握)1、常量 1)、定义 在程序执行的过程中,其值不发生改…...
2024/4/29 23:27:58
最新文章
- 第一天复习Qt文件读取
Qt文件操作: 1、QFile QTextStream操作文件案例: 1、打开文件 QFile file(absolute filepath | relative path); file.readLine()返回内容长度,如果为-1就是读取失败 file. Close()读取后关闭 file.errorString()返回文件打开发生的错误2、…...
2024/5/9 0:06:10 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/7 10:36:02 - Pytorch for training1——read data/image
blog torch.utils.data.Dataset create dataset with class torch.utils.data.Dataset automaticly import torch from torch.utils.data import Datasetclass MyDataset(Dataset):def __init__(self, data):self.data datadef __getitem__(self, index):# 根据索引获取样本…...
2024/5/6 13:47:12 - 今天起,Windows可以一键召唤GPT-4了
ChatGPT狂飙160天,世界已经不是之前的样子。 新建了人工智能中文站https://ai.weoknow.com 每天给大家更新可用的国内可用chatGPT资源 发布在https://it.weoknow.com 更多资源欢迎关注 微软 AI 大计的最后一块拼图完成了? 把 Copilot 按钮放在 Window…...
2024/5/6 6:59:37 - 416. 分割等和子集问题(动态规划)
题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义:dp[i][j]表示当背包容量为j,用前i个物品是否正好可以将背包填满ÿ…...
2024/5/8 19:32:33 - 【Java】ExcelWriter自适应宽度工具类(支持中文)
工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...
2024/5/7 22:31:36 - Spring cloud负载均衡@LoadBalanced LoadBalancerClient
LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...
2024/5/8 1:37:40 - TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案
一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...
2024/5/8 20:33:13 - VB.net WebBrowser网页元素抓取分析方法
在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...
2024/5/8 1:37:39 - 【Objective-C】Objective-C汇总
方法定义 参考:https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...
2024/5/7 16:57:02 - 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】
👨💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...
2024/5/7 14:58:59 - 【ES6.0】- 扩展运算符(...)
【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数࿰…...
2024/5/8 20:58:56 - 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?
文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...
2024/5/7 21:15:55 - Go语言常用命令详解(二)
文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...
2024/5/8 1:37:35 - 用欧拉路径判断图同构推出reverse合法性:1116T4
http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b,我们在 a i a_i ai 和 a i 1 a_{i1} ai1 之间连边, b b b 同理,则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然࿰…...
2024/5/7 16:05:05 - 【NGINX--1】基础知识
1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包: apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...
2024/5/8 18:06:50 - Hive默认分割符、存储格式与数据压缩
目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限(ROW FORMAT)配置标准HQL为: ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...
2024/5/8 1:37:32 - 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法
文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...
2024/5/7 16:05:05 - --max-old-space-size=8192报错
vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...
2024/5/8 1:37:31 - 基于深度学习的恶意软件检测
恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...
2024/5/8 1:37:31 - JS原型对象prototype
让我简单的为大家介绍一下原型对象prototype吧! 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象…...
2024/5/8 12:44:41 - C++中只能有一个实例的单例类
C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...
2024/5/8 9:51:44 - python django 小程序图书借阅源码
开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图࿰…...
2024/5/8 1:37:29 - 电子学会C/C++编程等级考试2022年03月(一级)真题解析
C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...
2024/5/7 17:09:45 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57