1.递归与分治的关系
分治是一种算法思想,递归是实现这种思想的一种手段。递归策略只需要少量的代码就可以描述出解决过程所需的多次重复计算,大大减少了代码量。
2.递归的概念
直接或者间接地调用自身的算法/函数 称为递归算法/函数。
递归程序设计中地两个问题:
递归体:大问题是如何划分为小问题的。
递归出口:确定递归何时终止。边界条件不满足时,递归前进;边界条件满足时,递归返回。一般递归出口直接return或者cout,不再使用递归。
递归的优缺点
优点:描述简洁且易于理解。
缺点:运行效率低;递归次数过多容易造成堆栈溢出。
例题
例1:使用递归求n!
#include
using namespace std;
int fac(int n){
int result;
if(n<0){
cout<<"error"<
例2:使用递归求斐波那契数列
#include
using namespace std;
int fib(int n){
if(n<1){
cout<<"error";
}
else if(n==1||n==2){
return 1;
}
else{
return fib(n-1)+fib(n-2);
}
}
int main()
{
cout<
例3:递归解决汉诺塔问题
#include
using namespace std;
int han(int n)
{
if(n==0){
return 0;
}
else if(n==1){
return 1;
}
else{
return han(n-1)*2+1;
}
}
int main()
{
cout<
例4:递归解决猴子吃桃问题。
猴子第一天采摘了一些桃子,第二天吃了第一天的一半多一个,第三天吃了第二天的一半多一个...直到第十天就剩下一个。问:猴子第一天摘了多少桃子?
#include
using namespace std;
int monkey(int n){
if(n==10){
return 1;
}
else{
return (monkey(n+1)+1)*2;
}
}
int main()
{
cout<
例5:编写一个递归函数,将10进制转化成radix进制
//除基数,取余数,结果倒序排序
#include
using namespace std;
void change(int n,int r)
{
if(n!=0){
change(n/r,r);
cout<
例6:逆序输出一个正整数中的每一位数,例如:输入12345,一次输出5 4 3 2 1
#include
using namespace std;
void reverse(int n){
if(n!=0){
cout<
3.集合的全排列问题
设计一个递归算法生成n个元素{r1,r2…,}的全排列(n!种)
//设R={r1,r2,…,rn}是要进行排列的n个元素,Ri=R-{ri}。
//集合X中元素的全排列记为perm(X)。
//(ri)perm(X)表示在全排列perm(X)的每一个排列前加上前缀ri得到的排列。
#include
using namespace std;
//perm函数产生下标为k~m的元素的全排列,作为前k-1个元素的后缀
void perm(int a[],int k,int m){
if(k==m){
for(int i=0;i<=m;i++){
cout<>n;
int a[n];
for(int i=0;i>a[i];
}
perm(a,0,n-1);
}
4.整数划分
将正整数 n 表示成一系列正整数之和: n=n 1 +n 2 +…+ n k ,
其中 n 1 ≥n 2 ≥…≥n k ≥1 , k≥1 。
正整数 n 的这种表示称为正整数 n 的划分。求正整数 n 的不同划分个数。
//例如:整数6的划分方法数如下
//6;(最大加数等于6)
//5+1;(最大加数等于5)
//4+2,4+1+1;(最大加数等于4)
//3+3,3+2+1,3+1+1+1;(最大加数等于3)
//2+2+2,2+2+1+1,2+1+1+1+1;(最大加数等于2)
//1+1+1+1+1+1。(最大加数等于1)
//整数6的划分方法数=最大加数不大于6的方法数=最大加数等于6的方法数+最大加数不大于5的方法数
//将n的最大加数不超过m的划分个数记作q(n,m)
//q(6,2):6的最大加数不超过2的方法数=最大加数等于2的方法数q(4,2)+最大加数不超过1的方法数q(6,1)
//n>m>1时,q(n,m)=q(n-m,m)+q(n,m-1)
//具体分析:
//m=1时,q(n,1)=1;(所有的加数都为1)
//n=1时,q(1,m)=1;(只有一种情况)
//m>=n时,q(n,m)=q(n,n)=1+q(n,n-1)(最大加数等于n的方法数+最大加数不大于n-1的方法数)
#include
using namespace std;
int zshf(int n,int m){
if(n<1){
return 0;
}
else if(n==1||m==1){
return 1;
}
else if(n<=m){
return zshf(n,n-1)+1;
}
else{
return zshf(n-m,m)+zshf(n,m-1);
}
}
int main(){
cout<
5.分治法的基本思想
分治法是将一个难以解决的大问题,分割成一些较小规模的相同问题,以便各个击破,分而治之。
分解-->求解-->合并
分治法的特征:
6.二分搜索技术
(1)给定已按 升序 排好序的 n 个元素a[0:n-1],现要在这 n 个元素中找出一特定元素 x 。
#include
#include
using namespace std;
//在数组a的下标0~n-1 的元素中寻找x
int bs(int a[],int x,int n){
int left=0;
int right=n-1;
while(left<=right){//二分搜索---使用while循环(不用递归)
int mid=(left+right)/2;
if(a[mid]==x){
return mid;
}
else if(a[mid]>x){
right=mid-1;
}
else{
left=mid+1;
}
}
return -1;//没有找到x
}
int main()
{
int n;
cin>>n;
int a[n];
for(int i=0;i>a[i];
}
sort(a,a+n);
for(int i=0;i
(2)找数对。给定若干个整数,询问其中是否有一对数的和等于给定的数。如果有多对数符合要求,输出最小数最小的一对。
#include
#include
using namespace std;
int bs(int a[],int left,int right,int k){
if(left>right){
return -1;
}
else{
int mid=(left+right)/2;
if(a[mid]==k){
return mid;
}
else if(a[mid]>k){
bs(a,left,mid-1,k);//二分搜索---使用递归
}
else{
bs(a,mid+1,right,k);
}
}
}
int main()
{
int n;
cin>>n;
int a[n];
for(int i=0;i>a[i];
}
sort(a,a+n);//将数组升序排序,便于找到最小数最小的数对
int sum;
cin>>sum;
for(int i=0;i
(3)排序且不重复输出
(因为可以用set解决,所以二分搜索先不写了)
7.循环赛日程表
8.棋盘覆盖问题
/******************************************
tr:当前棋盘左上角的方格的行号
tc:当前棋盘左上角的方格的列号
dr:特殊方格的行号
dc:特殊方格所在的列号
size:size=2^k,棋盘的规格为 2^k*2^k
*******************************************/
#include
using namespace std;
int board[100][100];
int tile=1;//tile表示L型骨牌的编号
//每次调用chess函数,函数里的if-else语句都会判断一遍,这样才能将左上、左下、右上、右下四个角全部填充
void chess(int tr,int tc,int dr,int dc,int size){
if(size==1){
return;//先判断棋盘的边长,如果是1,则返回
}
int t=tile++;//每进行一次调用,l型骨牌的编号+1
int s=size/2;//每进行一次调用,棋盘进行一次划分
//检查特殊方格是否在左上角子棋盘中
if(dr=tc+s){//在
chess(tr,tc+s,dr,dc,s);
}
else{//不在,将当前棋盘的左下角方格视为特殊方格,覆盖L型骨牌
board[tr+s-1][tc+s]=t;
chess(tr,tc+s,tr+s-1,tc+s,s);
}
//检查特殊方格是否在左下角子棋盘中
if(dr>=tr+s&&dc=tr+s&&dc>=tc+s){//在
chess(tr+s,tc+s,dr,dc,s);
}
else{//不在,将该子棋盘的左上角方格视为特殊方格,覆盖L型骨牌
board[tr+s][tc+s]=t;
chess(tr+s,tc+s,tr+s,tc+s,s);
}
}
int main(){
int size;
cin>>size;
int dr,dc;
cin>>dr>>dc;
chess(0,0,dr,dc,size);
for(int i=0;i
9.从n个元素中找出第k小的元素
解决方法:
方法一:排序,时间复杂度O(nlogn)
方法二:优先队列,时间复杂度O(nlogn)
方法三:线性时间选择算法,时间复杂度O(n)(模仿快速排序算法,首先对输入的数组进行划分,然后对划分出的子数组之一进行递归处理。)
快速排序算法思想:
首先选第一个数作为分界数据,
将比它小的数据存储在它的左边,比它大的数据存储在它的右边,它存储在左、右两个子集之间。
这样左、右子集就是原问题分解后的独立子问题。
再用同样的方法,继续解决这些子问题,直到每个子集只有一个数据,就完成了全部数据的排序工作。
利用快速排序算法的思想,解决选择问题:
记一趟快速快速排序后,分解出左子集中元素个数为nleft,则选择问题可能是以下几种情况:
nleft=k-1,则分界数据就是选择问题的答案。
k-1
k-1>nleft,则选择问题的答案在右子集中找,问题规模变小。
/**********************************
a[]:要查找的序列
left:要查找的区间(!!!)的左边界下标
right:要查找的区间的右边界的下标
k:第k小的元素
********************************/
#include
using namespace std;
int select(int a[],int left,int right,int k){
int i=left;
int j=right;
int tmp;
if(lefttmp){//先判断a[j],j先移动
j--;
}
swap(a[i],a[j]);//j从右向左扫描,知道遇到小于tmp的a[j],交换a[i]和a[j]
while(ii){
return select(a,i+1,right,k);
}
else{
return select(a,left,i-1,k);
}
}
else if(left==right&&left==k-1){//区间中只有一个元素
return a[left];
}
}
int main()
{
int n;
while(cin>>n){
int a[n];
int k;
cin>>k;
for(int i=0;i>a[i];
}
cout<
10.半数集问题
在该问题中,存在很多重复计算的子问题,比如求12的半数集时会包含3的半数集和6的半数集,而求6的半数集时也会包含3的半数集。为了不重复计算,我们使用记忆式搜索方法(备忘录方法)
#include
using namespace std;
int a[100];
int comp(int n){
int ans=1;
//半数集问题中的ans定义为局部变量,是因为每一个comp函数都是计算一个整数的半数集,
//每计算一个整数的半数集都需要初始化ans=1,所以定义为局部变量
if(a[n]>0){
return a[n];//如果n的半数集中元素的个数已经算出来了,就不需要重复计算
}
else{
for(int i=1;i<=n/2;i++){
ans=ans+comp(i);
}
a[n]=ans;
return ans;
}
}
int main()
{
int n;
cin>>n;
cout<
memset(参数1,参数2,参数3)
将某一内存中的全部内容置为指定的值
参数1:这块内存的起始地址
参数2:指定的值
字节的个数
11.整数因子分解问题
在上图中,叶节点为1的结点的个数,就是要求的方案数
#include
using namespace std;
int sum=0; //因为是整体的一个累加(也就是所有函数return结果的累加),所以需要将sum定义为全局变量
//半数集问题中的ans定义为局部变量,是因为每一个comp函数都是计算一个整数的半数集,
//每计算一个整数的半数集都需要初始化ans=1,所以定义为局部变量 。要区分开来
int solve(int n){
if(n==1){//!!!递归出口
sum++;
}
else{
for(int i=2;i<=n;i++){
if(n%i==0){
solve(n/i);
}
}
}
return sum;
}
int main()
{
int n;
cin>>n;
cout<
你可能感兴趣的:(算法)
CVE-2005-4900:TLS SHA-1 安全漏洞修复详解
Nova_CaoFc
运维日常 技术博文分享 安全 linux 服务器 运维
前言在信息安全日益重要的当下,任何微小的加密弱点都可能被攻击者利用,从而导致数据泄露、流量劫持或更严重的业务中断。本文将结合实际环境中常见的Nginx配置示例,深入剖析CVE-2005-4900(TLS中使用SHA-1哈希算法)的危害,并提供完整、可操作的修复流程。一、什么是CVE-2005-4900漏洞CVE-2005-4900定位于TLS协议中使用SHA-1作为消息认证和签名哈希算法的安全漏洞
内存受限编程:从原理到实践的全面指南
景彡先生
C++进阶 c++ 缓存
在嵌入式系统、物联网设备、移动应用等场景中,内存资源往往极为有限。如何在内存受限的环境中设计高效、稳定的程序,是每个开发者都可能面临的挑战。本文将从硬件原理、操作系统机制、算法优化到代码实现技巧,全面解析内存受限编程的核心技术。一、内存受限环境概述1.1典型内存受限场景场景可用内存范围典型应用8位单片机几KB-64KB传感器节点、简单控制器32位嵌入式系统64KB-512MB智能家居设备、工业控制
深入探索C++ STL:从基础到进阶
目录引言一、什么是STL二、STL的版本三、STL的六大组件容器(Container)算法(Algorithm)迭代器(Iterator)仿函数(Functor)空间配置器(Allocator)配接器(Adapter)四、STL的重要性五、如何学习STL六、STL的缺陷总结引言在C++的世界里,标准模板库(STL)是一项极为强大的工具。它不仅为开发者提供了可复用的组件库,更是一个融合了数据结构与算
【加解密与C】Rot系列(二)Rot13
Rot13简介Rot13(Rotateby13places)是一种简单的字母替换加密算法,属于凯撒密码(Caesarcipher)的特例。它将字母表中的每个字母替换为字母表中距离它13个位置的字母。例如,字母A替换为N,B替换为O,以此类推。由于英文字母有26个字符,Rot13的特点是加密和解密使用相同的算法。Rot13算法规则对字母表中的每个字母,进行如下替换:大写字母A-Z:A→N,B→O,…
探索OpenCV 3.2源码:计算机视觉的架构与实现
轩辕姐姐
本文还有配套的精品资源,点击获取简介:OpenCV是一个全面的计算机视觉库,提供广泛的功能如图像处理、对象检测和深度学习支持。OpenCV3.2版本包含了改进的深度学习和GPU加速特性,以及丰富的示例程序。本压缩包文件提供了完整的OpenCV3.2源代码,对于深入学习计算机视觉算法和库实现机制十分宝贵。源码的模块化设计、C++接口、算法实现、多平台支持和性能优化等方面的深入理解,都将有助于开发者的
LeetCode-268-丢失的数字
醉舞经阁半卷书
丢失的数字题目描述:给定一个包含[0,n]中n个数的数组nums,找出[0,n]这个范围内没有出现在数组中的那个数。进阶:你能否实现线性时间复杂度、仅使用额外常数空间的算法解决此问题?示例说明请见LeetCode官网。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/missing-number/著作权归领扣网络所有。商业转载请联系官方授权,非商
python automl_自动化的机器学习(AutoML):将AutoML部署到云中
编辑推荐:在本文中,将介绍一种AutoML设置,使用Python、Flask在云中训练和部署管道;以及两个可自动完成特征工程和模型构建的AutoML框架。本文来自于搜狐网,由火龙果软件Alice编辑、推荐。AutoML到底是什么?AutoML是一个很宽泛的术语,理论上来说,它囊括从数据探索到模型构建这一完整的数据科学循环周期。但是,我发现这个术语更多时候是指自动的特征预处理和选择、模型算法选择和超
云原生环境中Consul的动态服务发现实践
AI云原生与云计算技术学院
AI云原生与云计算 云原生 consul 服务发现 ai
云原生环境中Consul的动态服务发现实践关键词:云原生,服务发现,Consul,微服务,动态注册,健康检查,Raft算法摘要:本文深入探讨云原生环境下Consul在动态服务发现中的核心原理与实践方法。通过剖析Consul的架构设计、核心算法和关键机制,结合具体代码案例演示服务注册、发现和健康检查的全流程。详细阐述在Kubernetes、Docker等云原生技术栈中的集成方案,分析实际应用场景中的
云原生环境里Nginx的故障排查思路
AI云原生与云计算技术学院
AI云原生与云计算 云原生 nginx 运维 ai
云原生环境里Nginx的故障排查思路关键词:云原生、Nginx、故障排查、容器化、Kubernetes摘要:本文聚焦于云原生环境下Nginx的故障排查思路。随着云原生技术的广泛应用,Nginx作为常用的高性能Web服务器和反向代理服务器,在容器化和编排的环境中面临着新的故障场景和挑战。文章首先介绍云原生环境及Nginx的相关背景知识,接着阐述核心概念和联系,详细讲解故障排查的核心算法原理与操作步骤
谷歌云(GCP)入门指南:从零开始搭建你的第一个云应用
AI云原生与云计算技术学院
AI云原生与云计算 perl 服务器 网络 ai
谷歌云(GCP)入门指南:从零开始搭建你的第一个云应用关键词:谷歌云、GCP、云应用搭建、入门指南、云计算摘要:本文旨在为初学者提供一份全面的谷歌云(GCP)入门指南,详细介绍如何从零开始搭建第一个云应用。通过逐步分析推理,我们将涵盖背景知识、核心概念、算法原理、数学模型、项目实战、实际应用场景、工具资源推荐等多个方面,帮助读者深入理解GCP的使用方法和搭建云应用的流程,为后续的云计算实践打下坚实
院级医疗AI管理流程—基于数据共享、算法开发与工具链治理的系统化框架
Allen_Lyb
医疗高效编程研发 人工智能 算法 时序数据库 经验分享 健康医疗
医疗AI:从“单打独斗”到“协同共进”在科技飞速发展的今天,医疗人工智能(AI)正以前所未有的速度改变着传统医疗模式。从最初在影像诊断、临床决策支持、药物发现等单一领域的“单点突破”,医疗AI如今已迈向“系统级协同”的新阶段。曾经,医疗AI的应用多集中在某一特定环节,比如利用深度学习算法分析医学影像,辅助医生进行疾病诊断。这种单点突破式的应用虽然在一定程度上提高了医疗效率,但随着医疗行业对AI技术
【数据结构与算法】力扣 88. 合并两个有序数组
秀秀_heo
数据结构与算法 leetcode 算法 职场和发展
题目描述88.合并两个有序数组给你两个按非递减顺序排列的整数数组nums1**和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你合并nums2**到nums1中,使合并后的数组同样按非递减顺序排列。注意:最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1的初始长度为m+n,其中前m个元素表示应合并的元素,后n个元素为0,应忽略。
面试高频题 力扣 130. 被围绕的区域 洪水灌溉(FloodFill) 深度优先遍历(dfs) 暴力搜索 C++解题思路 每日一题
Q741_147
C/C++ 每日一题:从语法到算法 面试 leetcode 深度优先 c++ 洪水灌溉
目录零、题目描述一、为什么这道题值得你花时间掌握?二、题目拆解:提取核心关键点三、解题思路:从边界入手,反向标记四、算法实现:深度优先遍历(DFS)+两次遍历五、C++代码实现:一步步拆解代码拆解时间复杂度空间复杂度七、坑点总结八、举一反三九、总结零、题目描述题目链接:被围绕的区域题目描述:示例1:输入:board=[[“X”,“X”,“X”,“X”],[“X”,“O”,“O”,“X”],[“X”
2007. 从双倍数组中还原原数组
【算法题解析】还原双倍数组—从打乱的数组恢复原数组题目描述给定一个整数数组changed,该数组是通过对一个原始数组original的每个元素乘以2并打乱顺序后得到的。你的任务是判断给定的changed是否为某个original数组的双倍数组,并返回该原数组。具体来说,存在一个数组original,使得对original中的每个元素x,changed中都包含x和2*x两个元素(顺序可能被打乱)。如
最新1区9+非肿瘤纯生信,逻辑清晰易懂,机器学习筛选关键基因的纯生信也可以发高水平期刊,抓紧上车!
生信小课堂
影响因子:9.186关于非肿瘤生信,我们也解读过很多,主要有以下类型1单个疾病WGCNA+PPI分析筛选hub基因2单个疾病结合免疫浸润,热点基因集,机器学习算法等。3两种相关疾病联合分析,包括非肿瘤结合非肿瘤,非肿瘤结合肿瘤或者非肿瘤结合泛癌分析4基于分型的非肿瘤生信分析5单细胞结合普通转录组生信分析目前非肿瘤生信发文的门槛较低,欢迎大家!研究概述:本研究首先使用R语言在三个基因表达数据集中找到
聚众识别漏检难题?陌讯多尺度检测实测提升 92%
一、开篇痛点:复杂场景下的聚众识别困境在安防监控、大型赛事等场景中,实时聚众识别是保障公共安全的核心技术。但传统视觉算法常面临三大难题:一是密集人群重叠导致小目标漏检率超30%,二是光照变化(如夜间逆光)引发误报率飙升,三是复杂背景干扰下实时性不足(FPS<15)。某景区监控项目曾反馈,开源模型在节假日人流高峰时,因漏检导致预警延迟达20秒,存在严重安全隐患。这些问题的根源在于传统算法的局限性:单
Python 算法基础篇之线性搜索算法:顺序搜索、二分搜索
挣扎的蓝藻
Python算法初阶:入门篇 python 算法 开发语言
Python算法基础篇之线性搜索算法:顺序搜索、二分搜索引用1.顺序搜索算法2.二分搜索算法3.顺序搜索和二分搜索的对比a)适用性b)时间复杂度c)前提条件4.实例演示实例1:顺序搜索实例2:二分搜索总结引用在算法和数据结构中,搜索是一种常见的操作,用于查找特定元素在数据集合中的位置。线性搜索算法是最简单的搜索算法之一,在一组数据中逐一比较查找目标元素。本篇博客将介绍线性搜索算法的两种实现方式:顺
【算法】哈希映射(C/C++)
摆烂小白敲代码
哈希算法 算法 c语言 c++ 数据结构
目录算法引入:算法介绍:优点:缺点:哈希映射实现:mapunordered_map题目链接:“蓝桥杯”练习系统解析:代码实现:哈希映射算法是一种通过哈希函数将键映射到数组索引以快速访问数据的数据结构。它的核心思想是利用哈希函数的快速计算能力,将键(Key)转换为数组索引,从而实现对数据的快速访问和存储。哈希映射在现代软件开发中非常重要,它提供了高效的数据查找、插入和删除操作。算法引入:小白算法学校
计算机视觉算法实战——关键点检测
✨个人主页欢迎您的访问✨期待您的三连✨✨个人主页欢迎您的访问✨期待您的三连✨✨个人主页欢迎您的访问✨期待您的三连✨1.引言关键点检测(KeypointDetection)是计算机视觉领域中的一个重要研究方向,旨在从图像或视频中检测出具有特定语义信息的关键点。这些关键点通常代表了物体的特定部位或特征,例如人体的关节、面部特征点、车辆的轮子等。关键点检测在姿态估计、动作识别、目标跟踪、三维重建等任务中
博弈算法
有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够取胜。(一)巴什博奕(BashGame):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。显然,如果n=m+1,那么由于一次最
STL 简介(标准模板库)
前言通过对C++的特性,类和对象的学习和C++的内存管理对C++基本上有了全面的认识,但是C++的核心在于STL一、STL简介什么是STLC++STL(StandardTemplateLibrary,标准模板库)是C++编程语言中一个功能强大的模板库,它提供了一系列通用的数据结构和算法。STL的设计基于泛型编程,这意味着它使用模板来编写独立于任何特定数据类型的代码。STL的核心组件包括容器(如向量
C++博弈论
善良的小乔
博弈 c++ 算法 开发语言
C++中的博弈算法主要用于解决两人对弈或多方博弈中的策略问题,常用于解决在棋类、卡牌、游戏等情景下的最优策略。这类算法通常基于数学博弈论,重点在于模拟玩家的策略选择并寻找最优解。下面将逐步介绍博弈算法的基本思想、常用算法以及具体实现思路。一、博弈算法的基本思想博弈算法的核心在于状态空间搜索,通过模拟玩家的所有可能动作,推导出局面评价和策略选择,常见特性包括:零和博弈:一个玩家的得分增加意味着另一个
工服误检率高达40%?陌讯改进YOLOv7实战降噪50%
2501_92487859
YOLO 算法 视觉检测 目标检测 计算机视觉
开篇痛点:工业场景的视觉检测困境在工地、化工厂等高危场景,传统视觉算法面临三重挑战:环境干扰:强光/阴影导致工服颜色失真目标微小:安全帽反光标识仅占图像0.1%像素遮挡密集:工人簇拥时漏检率超35%(数据来源:CVPR2023工业检测白皮书)行业真相:某安监部门实测显示,开源YOLOv5在雾天场景误报率高达41%技术解析:陌讯算法的三大创新设计1.多模态特征融合架构#伪代码示例:可见光+红外特征融
渣土车识别漏检率高?陌讯算法实测降 90%
2501_92487936
目标跟踪 人工智能 计算机视觉 目标检测 算法 智慧城市
在城市建筑垃圾运输管理中,渣土车的合规性监测一直是行业痛点。传统视觉算法在复杂工况下常常出现误判——阴雨天车牌识别模糊、夜间车灯眩光导致车型误分类、不同品牌渣土车混检时准确率骤降。某市政管理局的统计显示,采用传统方案时,日均漏检率高达23%,由此引发的违规倾倒投诉占比超60%。技术解析:从单模态到多特征融合的突破传统渣土车识别多依赖单一目标检测模型(如FasterR-CNN),其核心缺陷在于:特征
路面裂缝漏检率高?陌讯多尺度检测降 30%
2501_92487936
计算机视觉 opencv 人工智能 深度学习 算法 目标检测
在市政工程与公路养护领域,路面裂缝检测是保障交通安全的关键环节。传统人工巡检不仅效率低下(日均检测≤50公里),且受主观因素影响漏检率高达15-20%[1]。而主流开源视觉算法在面对阴影干扰、多类型裂缝混杂等场景时,往往陷入"精度与速度不可兼得"的困境。本文将结合实战案例,解析陌讯视觉算法在路面裂缝检测中的技术突破与落地经验。一、技术解析:从传统方法到多模态融合架构传统裂缝检测多采用"边缘检测+形
考场/工厂违规用机难捕捉?3维度优化方案部署成本直降40%
2501_92487762
视觉检测 计算机视觉 算法 目标检测
开篇痛点工业场景中传统玩手机识别面临三重挑战:小目标检测(手机平均像素占比<0.5%)、遮挡干扰(人手/物体遮挡率超60%)、实时性要求(需200ms内响应)。某安检企业反馈,开源YOLOv5在车间场景误报率高达34%。技术解析:双流特征融合架构陌讯算法创新性融合双路径特征(图1):#陌讯核心代码逻辑(简化版)defdual_path_fusion(backbone):shallow_path=C
复杂场景检测失效?陌讯多模态算法在千万级监控网的落地实战
2501_92473061
算法 视觉检测 安全 计算机视觉
开篇痛点:安防监控的检测困境"明明人就在画面里,系统却毫无反应!"——这是某智慧园区安防负责人的吐槽。传统目标检测模型在安防监控场景面临三大死穴:漏报:夜间、遮挡场景下召回率骤降(实测ResNet50漏报率>40%)误报:树叶晃动、光影变化引发的误报占比超35%延迟:1080P视频流检测延迟普遍>100ms,难以满足实时响应需求技术解析:陌讯算法的三阶优化架构陌讯视觉算法采用多模态特征金字塔(MM
复杂场景检测老翻车?陌讯算法实测提升 40%
2501_92453489
算法 视觉 计算机视觉 视觉检测
在工业质检、安防监控等计算机视觉落地场景中,工程师常面临棘手问题:传统算法在光照突变、目标遮挡等复杂环境下,漏检率高达20%以上,泛化能力不足成为项目落地的最大阻碍。而陌讯AI视觉算法通过架构创新,正在重新定义复杂场景下的检测精度标准。技术解析:从单模态到多模态的跨越传统目标检测模型多依赖单一RGB图像输入,在特征提取阶段容易受环境干扰。以经典的FasterR-CNN为例,其区域提议网络(RPN)
深度学习超参数优化(HPO)终极指南:从入门到前沿
摘要:在深度学习的实践中,模型性能的好坏不仅取决于算法和数据,更在一半程度上取决于超参数的精妙设置。本文是一篇关于超参数优化(HyperparameterOptimization,HPO)的综合性指南,旨在带领读者从最基础的概念出发,系统性地梳理从经典到前沿的各类优化方法,并最终落地于实用策略和现代工具。无论您是初学者还是资深从业者,都能从中获得宝贵的见解。第一部分:夯实基础——HPO的核心概念1
【C++特殊工具与技术】固有的不可移植的特性(3)::extern“C“
在软件开发中,混合编程是常见需求:C++调用C语言编写的底层库(如Linux系统调用)、C程序调用C++实现的算法模块,甚至C++与Ada、Fortran等其他语言交互。但不同语言在函数命名规则和调用约定上的差异,会导致链接阶段出现“无法解析的外部符号”错误。目录一、命名修饰与链接问题:CvsC++1.1C++的命名修饰机制1.2C语言的“无修饰”命名1.3链接失败的典型场景二、extern"C"
knob UI插件使用
换个号韩国红果果
JavaScript jsonp knob
图形是用canvas绘制的
js代码
var paras = {
max:800,
min:100,
skin:'tron',//button type
thickness:.3,//button width
width:'200',//define canvas width.,canvas height
displayInput:'tr
Android+Jquery Mobile学习系列(5)-SQLite数据库
白糖_
JQuery Mobile
目录导航
SQLite是轻量级的、嵌入式的、关系型数据库,目前已经在iPhone、Android等手机系统中使用,SQLite可移植性好,很容易使用,很小,高效而且可靠。
因为Android已经集成了SQLite,所以开发人员无需引入任何JAR包,而且Android也针对SQLite封装了专属的API,调用起来非常快捷方便。
我也是第一次接触S
impala-2.1.2-CDH5.3.2
dayutianfei
impala
最近在整理impala编译的东西,简单记录几个要点:
根据官网的信息(https://github.com/cloudera/Impala/wiki/How-to-build-Impala):
1. 首次编译impala,推荐使用命令:
${IMPALA_HOME}/buildall.sh -skiptests -build_shared_libs -format
2.仅编译BE
${I
求二进制数中1的个数
周凡杨
java 算法 二进制
解法一:
对于一个正整数如果是偶数,该数的二进制数的最后一位是 0 ,反之若是奇数,则该数的二进制数的最后一位是 1 。因此,可以考虑利用位移、判断奇偶来实现。
public int bitCount(int x){
int count = 0;
while(x!=0){
if(x%2!=0){ /
spring中hibernate及事务配置
g21121
Hibernate
hibernate的sessionFactory配置:
<!-- hibernate sessionFactory配置 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<
log4j.properties 使用
510888780
log4j
log4j.properties 使用
一.参数意义说明
输出级别的种类
ERROR、WARN、INFO、DEBUG
ERROR 为严重错误 主要是程序的错误
WARN 为一般警告,比如session丢失
INFO 为一般要显示的信息,比如登录登出
DEBUG 为程序的调试信息
配置日志信息输出目的地
log4j.appender.appenderName = fully.qua
Spring mvc-jfreeChart柱图(2)
布衣凌宇
jfreechart
上一篇中生成的图是静态的,这篇将按条件进行搜索,并统计成图表,左面为统计图,右面显示搜索出的结果。
第一步:导包
第二步;配置web.xml(上一篇有代码)
建BarRenderer类用于柱子颜色
import java.awt.Color;
import java.awt.Paint;
import org.jfree.chart.renderer.category.BarR
我的spring学习笔记14-容器扩展点之PropertyPlaceholderConfigurer
aijuans
Spring3
PropertyPlaceholderConfigurer是个bean工厂后置处理器的实现,也就是BeanFactoryPostProcessor接口的一个实现。关于BeanFactoryPostProcessor和BeanPostProcessor类似。我会在其他地方介绍。
PropertyPlaceholderConfigurer可以将上下文(配置文件)中的属性值放在另一个单独的标准java
maven 之 cobertura 简单使用
antlove
maven test unit cobertura report
1. 创建一个maven项目
2. 创建com.CoberturaStart.java
package com;
public class CoberturaStart {
public void helloEveryone(){
System.out.println("=================================================
程序的执行顺序
百合不是茶
JAVA执行顺序
刚在看java核心技术时发现对java的执行顺序不是很明白了,百度一下也没有找到适合自己的资料,所以就简单的回顾一下吧
代码如下;
经典的程序执行面试题
//关于程序执行的顺序
//例如:
//定义一个基类
public class A(){
public A(
设置session失效的几种方法
bijian1013
web.xml session失效 监听器
在系统登录后,都会设置一个当前session失效的时间,以确保在用户长时间不与服务器交互,自动退出登录,销毁session。具体设置很简单,方法有三种:(1)在主页面或者公共页面中加入:session.setMaxInactiveInterval(900);参数900单位是秒,即在没有活动15分钟后,session将失效。这里要注意这个session设置的时间是根据服务器来计算的,而不是客户端。所
java jvm常用命令工具
bijian1013
java jvm
一.概述
程序运行中经常会遇到各种问题,定位问题时通常需要综合各种信息,如系统日志、堆dump文件、线程dump文件、GC日志等。通过虚拟机监控和诊断工具可以帮忙我们快速获取、分析需要的数据,进而提高问题解决速度。 本文将介绍虚拟机常用监控和问题诊断命令工具的使用方法,主要包含以下工具:
&nbs
【Spring框架一】Spring常用注解之Autowired和Resource注解
bit1129
Spring常用注解
Spring自从2.0引入注解的方式取代XML配置的方式来做IOC之后,对Spring一些常用注解的含义行为一直处于比较模糊的状态,写几篇总结下Spring常用的注解。本篇包含的注解有如下几个:
Autowired
Resource
Component
Service
Controller
Transactional
根据它们的功能、目的,可以分为三组,Autow
mysql 操作遇到safe update mode问题
bitray
update
我并不知道出现这个问题的实际原理,只是通过其他朋友的博客,文章得知的一个解决方案,目前先记录一个解决方法,未来要是真了解以后,还会继续补全.
在mysql5中有一个safe update mode,这个模式让sql操作更加安全,据说要求有where条件,防止全表更新操作.如果必须要进行全表操作,我们可以执行
SET
nginx_perl试用
ronin47
nginx_perl试用
因为空闲时间比较多,所以在CPAN上乱翻,看到了nginx_perl这个项目(原名Nginx::Engine),现在托管在github.com上。地址见:https://github.com/zzzcpan/nginx-perl
这个模块的目的,是在nginx内置官方perl模块的基础上,实现一系列异步非阻塞的api。用connector/writer/reader完成类似proxy的功能(这里
java-63-在字符串中删除特定的字符
bylijinnan
java
public class DeleteSpecificChars {
/**
* Q 63 在字符串中删除特定的字符
* 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。
* 例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”
*/
public static voi
EffectiveJava--创建和销毁对象
ccii
创建和销毁对象
本章内容:
1. 考虑用静态工厂方法代替构造器
2. 遇到多个构造器参数时要考虑用构建器(Builder模式)
3. 用私有构造器或者枚举类型强化Singleton属性
4. 通过私有构造器强化不可实例化的能力
5. 避免创建不必要的对象
6. 消除过期的对象引用
7. 避免使用终结方法
1. 考虑用静态工厂方法代替构造器
类可以通过
[宇宙时代]四边形理论与光速飞行
comsci
从四边形理论来推论 为什么光子飞船必须获得星光信号才能够进行光速飞行?
一组星体组成星座 向空间辐射一组由复杂星光信号组成的辐射频带,按照四边形-频率假说 一组频率就代表一个时空的入口
那么这种由星光信号组成的辐射频带就代表由这些星体所控制的时空通道,该时空通道在三维空间的投影是一
ubuntu server下python脚本迁移数据
cywhoyi
python Kettle pymysql cx_Oracle ubuntu server
因为是在Ubuntu下,所以安装python、pip、pymysql等都极其方便,sudo apt-get install pymysql,
但是在安装cx_Oracle(连接oracle的模块)出现许多问题,查阅相关资料,发现这边文章能够帮我解决,希望大家少走点弯路。http://www.tbdazhe.com/archives/602
1.安装python
2.安装pip、pymysql
Ajax正确但是请求不到值解决方案
dashuaifu
Ajax async
Ajax正确但是请求不到值解决方案
解决方案:1 . async: false , 2. 设置延时执行js里的ajax或者延时后台java方法!!!!!!!
例如:
$.ajax({ &
windows安装配置php+memcached
dcj3sjt126com
PHP Install memcache
Windows下Memcached的安装配置方法
1、将第一个包解压放某个盘下面,比如在c:\memcached。
2、在终端(也即cmd命令界面)下输入 'c:\memcached\memcached.exe -d install' 安装。
3、再输入: 'c:\memcached\memcached.exe -d start' 启动。(需要注意的: 以后memcached将作为windo
iOS开发学习路径的一些建议
dcj3sjt126com
ios
iOS论坛里有朋友要求回答帖子,帖子的标题是: 想学IOS开发高阶一点的东西,从何开始,然后我吧啦吧啦回答写了很多。既然敲了那么多字,我就把我写的回复也贴到博客里来分享,希望能对大家有帮助。欢迎大家也到帖子里讨论和分享,地址:http://bbs.csdn.net/topics/390920759
下面是我回复的内容:
结合自己情况聊下iOS学习建议,
Javascript闭包概念
fanfanlovey
JavaScript 闭包
1.参考资料
http://www.jb51.net/article/24101.htm
http://blog.csdn.net/yn49782026/article/details/8549462
2.内容概述
要理解闭包,首先需要理解变量作用域问题
内部函数可以饮用外面全局变量
var n=999;
functio
yum安装mysql5.6
haisheng
mysql
1、安装http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
2、yum install mysql
3、yum install mysql-server
4、vi /etc/my.cnf 添加character_set_server=utf8
po/bo/vo/dao/pojo的详介
IT_zhlp80
java BO VO DAO POJO po
JAVA几种对象的解释
PO:persistant object持久对象,可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作.
VO:value object值对象。通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可
java设计模式
kerryg
java 设计模式
设计模式的分类:
一、 设计模式总体分为三大类:
1、创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。
2、结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。
3、行为型模式(11种):策略模式,模版方法模式,观察者模式,迭代子模式,责任链模式,命令模式,备忘录模式,状态模式,访问者
[1]CXF3.1整合Spring开发webservice——helloworld篇
木头.java
spring webservice CXF
Spring 版本3.2.10
CXF 版本3.1.1
项目采用MAVEN组织依赖jar
我这里是有parent的pom,为了简洁明了,我直接把所有的依赖都列一起了,所以都没version,反正上面已经写了版本
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="ht
Google 工程师亲授:菜鸟开发者一定要投资的十大目标
qindongliang1922
工作 感悟 人生
身为软件开发者,有什么是一定得投资的? Google 软件工程师 Emanuel Saringan 整理了十项他认为必要的投资,第一项就是身体健康,英文与数学也都是必备能力吗?来看看他怎么说。(以下文字以作者第一人称撰写)) 你的健康 无疑地,软件开发者是世界上最久坐不动的职业之一。 每天连坐八到十六小时,休息时间只有一点点,绝对会让你的鲔鱼肚肆无忌惮的生长。肥胖容易扩大罹患其他疾病的风险,
linux打开最大文件数量1,048,576
tianzhihehe
c linux
File descriptors are represented by the C int type. Not using a special type is often considered odd, but is, historically, the Unix way. Each Linux process has a maximum number of files th
java语言中PO、VO、DAO、BO、POJO几种对象的解释
衞酆夼
java VO BO POJO po
PO:persistant object持久对象
最形象的理解就是一个PO就是数据库中的一条记录。好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。
BO:business object业务对象
封装业务逻辑的java对象