3D接雨水——考察知识点

【算法】经典算法题:接雨水 I & II(Python实现) 一、接雨水 I leetcode.42 链接:https://leetcode.cn/problems/trapping-rain-water/ 难度:hard 这里介绍了两种方法:动态规划(时间和空间复杂度都为O(n)),双指针(时间复杂度O(n),空间复杂度O(1))。 1、动态规划 时间复杂度:O(n) 空间复杂度:O(n) (1)算法原理 首先,维护两个数组: leftMax:第i个元素表示第i个柱子及左边位置中,height的最大高度。 righ... 阅读详情

leetcode中的接雨水问题

 

从2D到3D,考察的知识点完全不同:2D中要求掌握双指针算法技巧,3D中要求掌握广度优先搜索算法+优先队列使用技巧

针对这个3D接雨水问题,罗列知识点

BFS:

广度优先搜索算法

breadth first search / broad first search

DFS:

深度优先搜索算法

deep first search

 

数据结构——图的遍历算法,根据访问节点的顺序,分为广度优先搜索BFS和深度优先搜索DFS。

  • 什么是图?一种灵活的数据结构,一般作为一种模型用来定义对象之间的关系或联系。
  • 图的表示:对象由顶点(V)表示,而对象之间的关系或者关联则通过图的边(E)来表示。 图可以分为有向图和无向图,一般用G=(V,E)来表示图。经常用邻接矩阵或者邻接表来描述一副图。

 

 

广度优先搜索BFS

// 通常用队列(先进先出,FIFO)实现
// 初始化队列Q
Q={起点s};
标记s为已访问;
while(Q非空){
    取QQ队首元素u;
    u出队;
    if(u==目标状态){
        ...
    }
    所有与u相邻且未被访问的点进入队列;
    标记u为已访问;
}

使用队列保存未被检测的结点。结点按照宽度有限的次序被访问和进出队列。

     --类似于树的按层次遍历的过程

     --广搜例子:你的眼镜掉在地上之后,你趴在地板上找。你总是先摸最接近你的地方,如果没有,再摸远一点的地方……

BFS算法用到了优先级队列,注意队列中元素的比较操作重载!

 

 

深度优先搜索DFS

思想:一直往深处走,直到找到接或者走不下去为止

DFS(dep,...) //dep代表目前DFS的深度 
{ 
    if(找到解||走不下去了) 
    { 
        ... 
        return; 
    } 
    枚举下一种情况,DFS(dep+1,...)
 }

使用栈保存未被检测的结点,结点按照深度优先的次序被访问并以此被压入栈中,并以相反的次序出栈进行新的检测。

     --类似于树的先根遍历

     --深搜例子:走迷宫,你没有办法用分身术来站在每个走过的位置。不撞南墙不回头。

DFS算法用到了递归和回溯。

 

 

实际案例:

BFS在三维接雨水问题中的应用。

问题来源与描述:https://leetcode-cn.com/problems/trapping-rain-water-ii/

辅助理解参考:https://blog.youkuaiyun.com/weixin_42054167/article/details/91989108

解法:

struct RainNode {
        int i, j, h;
        RainNode(int ii, int jj, int hh) :i(ii), j(jj), h(hh) {}
        bool operator <(const RainNode& root) const {
            return h>root.h;
        }
    };

    int trapRainWater(vector<vector<int>>& heightMap) {
        if (heightMap.empty()) return 0;
        int m = heightMap.size(), n = heightMap[0].size();
        int area = 0, h = 0; //h模拟水池外的海平面上升,m*n矩阵可以看做一个可以蓄水的水池

        // 存放访问过的格子,且每次执行时删除高度最小的格子
        // 存放的过程中,会将当前最小高度的几个格子放在前几个位置(后面的并不按顺序排放)
        priority_queue<RainNode> q; //优先级队列,该队列中是将高度小的放在队首

        vector<vector<bool>> visit(m, vector<bool>(n, false)); //m*n矩阵记录高度块是否被访问过

        // 最外围的高度块是不可能蓄水的,放入优先级队列中,且记录为已被访问过
        for (int i = 0; i < m; i++)
        {
            for (int j = 0; j < n; j++)
            {
                if (i == 0 || i == m - 1 || j == 0 || j == n - 1)
                {
                    q.push(RainNode(i, j, heightMap[i][j]));
                    visit[i][j] = true;
                }
            }
        }

        // 一个点的x和y坐标的四邻域,按照上下左右的顺序排列
        vector<int> x = { 0,0,-1,1 }, y = { -1,1,0,0 };

        while (!q.empty())
        {
            auto f = q.top(); //取出队列q中最小的节点

            // 当前格子的水平面高于海平面,海平面上升
            // 否则,计算海水流进低于海平面的格子
            if (h < f.h)
                h++;
            else
            {
                q.pop(); // 删除队列中最小的节点

                // 当前格子的四个邻域的格子,当坐标不超出水池矩阵范围且没有被访问过时,
                for (int k = 0; k < 4; k++)
                {
                    int i = f.i + x[k], j = f.j + y[k];
                    if (i >= 0 && i < m && j >= 0 && j < n && visit[i][j] == false)
                    {
                        int hh = heightMap[i][j];
                        if (hh < h)
                            area += h - hh;
                        q.push(RainNode(i, j, hh));
                        visit[i][j] = true;
                    }
                }
            }
        }

        return area;
    }


 

 

 

蓝桥杯Scratch国赛真题解析:融合3D打印的跨学科项目式学习 计算思维与工程实践是当代数字素养的核心。其原理在于将复杂问题分解,通过算法和逻辑进行建模与求解,最终转化为可执行的方案。这种思维模式的技术价值在于,它能系统性地培养从抽象分析到具象实现的能力,是连接虚拟编程与物理世界的关键桥梁。在创客教育和STEAM学习等应用场景中,计算思维常与3D打印等技术结合,形成“设计-模拟-制造”的完整工作流。本文以一道典型的蓝桥杯青少年创意编程组(Scratch)国赛真题为例,深入剖析如何利用Scratch进行参数化设计并输出三视图,进而指导3D建模与打印,完整展现了从虚拟代码到 阅读详情

相关推荐

BEV、3D检测与目标跟踪:三者本质区别与协同落地

BEV(鸟瞰视图)是一种将多源传感器数据统一映射到车辆坐标系的空间表达范式,核心解决异构感知‘语言不通’问题;3D目标检测是在该空间中精确定位物体三维结构的任务,关注BEV-IoU、朝向角等物理可解释指标;目标跟踪则需跨帧维持身份一致性,依赖状态估计与数据关联闭环。三者分属空间建模、单帧理解、时序推理三个技术层级,可组合但不可互替。高质量BEV是3D检测鲁棒性的基础,稳定检测又是ID连续跟踪的前提,最终共同支撑BEV轨迹预测等高阶应用。本文深入剖析三者的输入输出边界、典型技术路线及工业级联调陷阱。

weixin_33938733的博客 399

3D接雨水2(leetcode)——Java实现(又是想上吊的一天)

本以为今天有是平平的一天,结果早上起床,说突发疫情,停止线下课,然后十分开心。打开leetcode准备每日一题,结果给我做到自闭,一度想放弃!!接下来就让我们看一看这样的题。。。有多么恶心 给你一个 m x n 的矩阵,其中的值均为非负整数,代表二维高度图每个单元的高度,请计算图中形状最多能接多少体积的雨水。 示例 1: 输入: heightMap = [[1,4,3,1,3,2],[3,2,1,3,2,4],[2,3,3,2,3,1]] 输出: 4 解释: 下雨后,雨水将会被上图蓝色的方块中。总的接

apple_51673523的博客 6583

Python实现3D接雨水

鱼弦:优快云内容合伙人、优快云新星导师、全栈领域创作新星创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen)例如,在城市设计中,可以利用该算法评估建筑物和道路的排水系统,确定最佳的雨水收集策略。该算法的原理是通过遍历边界上的点,并使用优先队列(堆)来选择最低的点进行扩展。该算法基于优先队列(堆)的思想,通过从边界点开始,不断选择最低的点并向内部扩展,计算接到的雨水量。

走向CTO的路上... 716

力扣(leetcode) 407. 接雨水 II 3D接雨水

图中,蓝色的围栏中,高度为4的柱子为最短的。的思路,二维的情况下,我们用双指针的方法不断的缩小未被扫描到的范围,也就是被我们(用指针)划定的边界框起来的范围。利用最短围栏确定其领域接水高度的规则,我们可以依次确定红色区域的接水高度,然后将其加入到围栏当中,一直缩小围栏,就可以得到所有柱子的接水高度。的矩阵,其中的值均为非负整数,代表二维高度图每个单元的高度,请计算图中形状最多能接多少体积的雨水。”,这里也是这样,我们找到最短的那个围栏(柱子),它必然可以确定与它相邻的柱子的接水量。因为我们可以发现,最。

龙卡的博客 2695

EtherCAT同步模式实战:如何用TwinCAT配置DC-Synchronous模式(附时序图详解)

本文详细解析了如何在TwinCAT环境中配置EtherCAT的DC-Synchronous同步模式,实现纳秒级同步精度。通过硬件准备、参数配置和高级调优步骤,帮助工程师解决工业自动化中的同步挑战,提升运动控制性能。

gold的博客 1572

MCGS 和 200SMART 时间同步

在实际应用中,PLC经常会因为断电原因,导致时间不准确。假设我们设置了一个投加泵,每天8-18点投加。屏幕上显示的时间和PLC内部的时间,很可能不一样。所以需要在触摸屏上读取PLC的时间,并且提供设置功能。

mmxxoo_xxmmp的博客 1521

leetcode 407.接雨水II(超级简单易懂)

大家好,这里是张哈希刷题频道。今天给大家带来一道有意思的题目,"接雨水"。看到好多小伙伴,遇到了面试官想kill -9结束面试,抛出了这个3D接雨水核弹(前些年抛红黑树线段树之类的),接不下来基本上就宣布下线,此时一般可以直接带上简历走人了 ... (开个玩笑,可以继续厚脸皮硬刚,坚持我能赢)这个题目听起来很恐怖,其实是个老派难题。我们从头到尾把这个题目的解决过程讲解一遍。首先来看题目,题目大意是给你一个二维的height map,让你求这个地形能够接的雨水总量。

m0_58032574的博客 3738

PICO4 VR开发调试神器:用Live Preview Plugin实现电脑串流,告别反复打包烧录的繁琐流程

本文详细介绍了PICO4 VR开发中如何使用Live Preview Plugin实现电脑串流,显著提升开发效率。通过实时预览和调试功能,开发者可以避免反复打包烧录的繁琐流程,特别适用于Unity环境下的VR应用开发。文章涵盖环境配置、连接设置、实时调试技巧及性能优化方案,是PICO4开发者的必备指南。

weixin_34110970的博客 418

【经典题】【接雨水问题】二维(LeetCode 42)与三维(LeetCode 407)接雨水的原理、解法优化、多语言实现、大厂考察点

接雨水问题是算法面试高频题,本文解析二维(LeetCode 42)和三维(LeetCode 407)接雨水的核心原理与解法。二维问题的关键在于每个位置的雨水量由左右最大高度的较小值决定,公式为 min(left_max, right_max) - height[i]。提供暴力解法(O(n²))、动态规划(O(n))和双指针优化(O(1)空间)三种实现,包含Python、Java、C++代码。三维问题采用最小堆+BFS,基于木桶原理从边界向内扩散计算。文章深入剖析解题思路,帮助应对大厂算法面试。

学习代码 1559

Proteus快速入门(最详细教程)

Proteus 是一款用于嵌入式单片机仿真的软件,用于在打PCB板之前对软件程序和硬件电路的正确性进行仿真验证。1.所以Proteus一般会和Keil软件进行联合仿真,在Proteus中绘制系统的电路图,在Keil软件中编写对应的程序后生成Hex文件。2.Proteus的仿真结果仅供参考,只能在一定程度上验证系统的可能性。实际实物系统还需要进行进一步的调试。以上即为本次分享的Proteus入门教程的全部内容,希望可以能够帮助到各位道友。

ediykk的博客 15万+

LTSPICE仿真电路:(二十八)三极管厄利电压与输出特性曲线深度解析

本文深入解析了LTSPICE仿真电路中三极管的厄利电压与输出特性曲线,详细介绍了厄利电压的物理意义、仿真设置及实际应用。通过伏安特性曲线和厄利电压的分析,帮助读者理解三极管放大性能的关键参数,并提供了电路设计中的优化方案和故障排查技巧。

weixin_26899659的博客 149

花式接雨水

文章目录第 11 题 怎样接最多的雨水思路一:暴力求解思路二:双指针第 42 题 能够接多少雨水思路一:暴力求解思路二:动态规划思路三:栈思路四:双指针(大杀器)第 407 题 第 42 题升级版——三维地图接雨水解题思路 今天总结一下 LeetCode 上的几道跟接雨水有关的题目。 第 11 题 怎样接最多的雨水 题目链接:11. Container With Most Water 原题如下: ...

supermouse的博客 562

手把手教你用LTspice仿真TVS二极管:从选型验证到波形分析全流程

本文详细介绍了如何使用LTspice仿真TVS二极管,从选型验证到波形分析的全流程。通过搭建仿真环境、核心参数验证和系统级防护策略,帮助工程师低成本评估TVS性能,优化电路设计。特别适用于电源设计和接口防护领域,提升工作效率和设计准确性。

weixin_29234239的博客 646

接雨水问题是什么?怎么解决? 接雨水 | 算法

如何用结构化思维建模物理问题;如何平衡时间与空间的权衡;如何从问题中抽象出核心逻辑。这正是算法的魅力所在——在逻辑与现实之间架起桥梁。

cnzzs的博客 960

Jmeter压测报告

账户分析压测报告 一、测试内容 本次测试是针对账户分析进行的压力测试,在账户分析查询接口中,只对用户资产查询接口进行压力测试,其中不包含用户签名校验功能。 二、测试方法 本次采用apache的开源测试工具jmeter,采用本地动态拼装请求数据并通过http协议GET方式发送每日盈亏查询请求。并采用1000个用户账号测试访问情况。...

qq_31108731的博客 6627

YOLO11的持续学习:如何在不遗忘旧数据的情况下学习新类别

类增量学习(Class-Incremental Learning, CIL)是持续学习(Continual Learning)的一个重要分支,它指的是模型在不遗忘已学旧类别知识的前提下,逐步学习新类别的能力。与传统机器学习假设所有数据一次可用不同,类增量学习更贴近现实世界应用场景——新的类别数据往往会随着时间推移逐步出现。 举个例子,假设我们已经训练好一个YOLOv11模型用于检测"猫"和"狗"两种动物,现在需要让模型新增识别"兔子"的能力。传统方法需要收集所有类别(猫、狗、兔子)的数据重新训练,而类增量

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1966

3D接雨水算法详解:从双指针到最小堆与BFS扩散

在算法面试中,接雨水是一道经典问题,而三维接雨水则更进一步,考察候选人对动态边界与最小瓶颈的建模能力。与二维依赖双指针或单调栈不同,三维场景下雨水可能从四个方向流失,必须将问题转化为边界扩展模型:从外围最矮的格子开始,用最小堆维护当前边界最低点,并配合BFS扩散向内填充。核心理念类似Dijkstra最短路径,每次取堆中最小高度,修正邻居的有效水位并累加积水量,visited数组则保证每个格子只处理一次。该解法结合优先队列与广度优先搜索,时间复杂度为O(N log N),在工程和数据建模中也有广泛应用。本文以

weixin_34248023的博客 321

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

3D接雨水怎么解?最小堆+BFS原理、代码与面试技巧全解析

在算法面试中,图遍历与优先队列是解决复杂容器类问题的两大基石。三维接雨水正是将二者结合的代表:给定一个二维高度矩阵,需计算雨水在三维地形中的蓄积量。其核心原理源于木桶效应——每个格子的蓄水量由它通往边界路径中的最低出口决定。因此,不能沿用二维接雨水的双指针或单调栈,而需用最小堆维护边界最低水位,配合BFS从外向内逐层推进,确保水位传递准确。该解法时间复杂度为O(mn log(mn)),空间O(mn),是应对大规模矩阵的最优方案。理解这套模型,不仅能攻克LeetCode难题,还能迁移到8邻接蓄水、输出每个格子

weixin_34393428的博客 304

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LeetCode接雨水问题:双指针解法与优化策略

接雨水问题是算法面试中的经典题目,考察对数组处理、动态规划和双指针等核心编程思想的综合运用能力。该问题要求计算给定高度图中柱子能接住的雨水量,涉及三维空间到二维高度的抽象转换。双指针法作为最优解,能在O(n)时间复杂度和O(1)空间复杂度下解决问题,其核心在于动态跟踪左右两侧的最大高度并移动较小max值的指针。这种算法思想在地理信息系统、建筑设计等工程领域有广泛应用,是提升问题抽象能力和算法思维的重要案例。理解暴力解法、预计算优化到双指针法的演进过程,对掌握算法优化策略具有重要意义。

weixin_30983353的博客 257

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

3D接雨水算法拆解:最小堆+BFS与Dijkstra变体

算法面试中,优先队列(堆)和最短路径遍历是高频考点,而3D接雨水正是将两者融合的典型难题。该问题可抽象为求每个格子到边界所有路径的最大高度中的最小值,本质是Dijkstra算法在取最大值运算下的变体,即最小堆+BFS扩散。与一维接雨水不同,二维矩阵中水可绕路流动,需从边界向内部逐步扩展,维护一个动态水位线。这种基于木桶效应的解法,不仅适用于LeetCode等在线评测,还可迁移到地形漫水模拟、网络widest path路由等实际场景。理解水位线与地面高度的区别,以及入堆即标记visited的细节,是正确编码的

weixin_33841722的博客 811

如何为 Web 前端开发面试做好准备

找朋友 mock 面试,提前熟悉答题节奏总结错题本,归纳不熟悉的知识点整理高频面试题,提高应对能力准备前端面试不仅仅是记住知识点,更重要的是理解和应用。通过扎实的基础、实践项目、模拟面试,才能在面试中脱颖而出。祝你面试顺利!

qq_34820371的博客 842

“AI+虚拟仿真”重塑环艺设计人才培养

摘要:随着数字经济发展,环境艺术设计行业加速向"AI+虚拟仿真"转型,但职业院校培养的人才面临技能断层问题。行业数据显示,2025年市场规模将达8000亿元,68%企业已采用AI工具,72%项目要求虚拟仿真技能,而60%毕业生缺乏相关实操能力。传统实训存在成本高、验证难、技术滞后等问题。恒点"AI+虚拟仿真"实训室通过智能平台、AIGC辅助设计、三大实训系统和XR资源创作等创新方案,构建沉浸式实践环境,实现"现实-虚拟-现实"闭环,有效提升学生数字

恒点虚拟仿真官方博客 487

涪陵农村建房分析:本土化服务在地形适配优势

农村建房常出现“效果图美好,落地走样”的情况,其根源往往在于设计团队与施工班组分离,导致信息传递失真。从现场勘测、方案设计到施工图深化,再到最终落地,全流程由同一主体负责,可减少沟通损耗,提升工期进度与工程品质的可控性。他们能针对山地、坡地等特定地形,优化防水、排水及防风结构方案。这种基于实地经验的工艺调整,有助于规避因地基处理不当或材料选型失误带来的长期隐患,提升房屋的耐久性。面对复杂的地理环境,业主在筛选建筑服务方时,建议重点考察“本土化经验”与“全链条管控能力”,而非仅关注单平方米造价。

d18580086669的博客 202

从DEM到等高线:手撕矢量与栅格两种地形表达

在本章中,我们详细论述了一种综合了矢量特性与栅格特性的地理空间数据——地形。因此,如果我们前面对矢量和栅格掌握的比较熟练,掌握地形相关的知识也不是太难。此外,我们还介绍了一些地形数据的基本处理方法,地形内插算法,晕渲图与等高线图的制作。其实地形相关的知识非常之丰富,远不是本章有限的内容所能涵盖的。而且,地形数据有其数据敏感性,普通从业者想获取高精度的数据进行深入研究也十分不易。不过还是那句话,示例的结果不重要,重要的是要了解其底层的原理,建立一个相对系统而全面的认知,在遇到更为复杂的难题时才能心中不慌。

tHeya06II的博客 227

2026年AI智能入户门怎么选?从人脸识别到全屋联动,一篇讲透选购避坑要点

随着智能家居概念的普及,传统的智能门锁已逐渐向具备主动感知与人机交互能力的AI智能入户门演进。这类产品集成了3D人脸识别、本地AI算力、可视对讲大屏以及全屋智能联动等核心功能,正成为智慧家庭的新入口。理解其技术原理,如从被动解锁到主动识别、端侧AI与云AI的差异,有助于在实际应用中做出理性判断。本文从智能门的基础安全模块出发,梳理了门体材质、C级锁芯、可视模组、本地算力及交互系统等关键参数,并结合主流品牌格局与真实安装经验,为有装修或换门需求的用户提供一套可落地的选型参考与避坑思路。

weixin_34414196的博客 371

LeetCode盛水容器问题的双指针解法详解

双指针技术是解决数组类算法问题的经典方法,通过维护两个指针在特定条件下移动来优化时间复杂度。其核心原理是通过缩小搜索空间来减少不必要的计算,在O(n)时间内解决问题。这种技术在解决盛水容器、两数之和等问题时特别有效,能够显著提升算法性能。以LeetCode第11题为例,通过比较左右指针对应的高度并移动较小的一方,可以高效找到能盛最多水的容器。该解法不仅适用于算法竞赛,在工程实践中也有广泛应用,如水库容量计算、容器设计等场景。理解双指针的移动策略和正确性证明,是掌握这类问题的关键。

weixin_30386713的博客 400
上一篇: 总想着自己老了还一事无成,顿时就心慌慌
下一篇: 动态规划
ML_AI
博客等级 码龄15年 293粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值