Dynamic programming - LSC problem

opencv——superpixel算法——SLIC,SEEDS,LSC 整理资料不容易,版权所,转载请标明出处,谢谢!!opencv关于超像素生成,目前没有发现网上有代码,这里为了方便大家使用超像素,我整理了一下opencv生成超像素的方法,希望对大家有帮助。这里主要介绍使用opencv生成superpixel,主要介绍的算法为SLIC,SEEDS,LSC。但是目前superpixel生成算法在OpenCV 3.1.0的Release版本中并不存在,因为他们是存放在op 阅读详情

LSC Problem

自底向上

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication17
{
    class Program
    {
        static void Main(string[] args)
        {
            int xLength;
            int yLength;
            Console.WriteLine ("Input the length of X : ");
            xLength = int.Parse(Console.ReadLine());
            Console.WriteLine ("Input the length of Y : ");
            yLength = int.Parse(Console.ReadLine());
            int [,] c = new int [xLength+1,yLength+1];
            int[] x = new int[xLength+1];
            int[] y = new int[yLength+1];
            for (int i = 0; i <= xLength; i++)
            {
                Console.WriteLine("Input each element of X : ");
                x[i] = int.Parse(Console.ReadLine());
                c[i, 0] = 0;
            }
            for (int i = 0; i <= yLength; i++)
            {
                Console.WriteLine("Input each element of Y : ");
                y[i] = int.Parse(Console.ReadLine());
                c[0, i] = 0;
            }
            for (int i = 1; i <= xLength; i++)
            {
                for (int j = 1; j <= yLength; j++)
                {
                    if (x[i] == y[j])
                        c[i, j] = c[i - 1, j - 1] + 1;
                    else if (c[i - 1, j] >= c[i, j - 1])
                        c[i, j] = c[i - 1, j];
                    else c[i, j] = c[i, j - 1];
                }
            }
            int[] pre = new int[0];
            int[] res = generate(pre,c,xLength,yLength,x);
            for (int i = 0; i < res.Length; i++)
            {
                Console.Write("{0} ", res[i]);
            }
            Console.Write("\n");
            for (int i = 0; i < xLength; i++)
            {
                for (int j = 0; j < yLength; j++)
                {
                    Console.Write("{0} ", c[i,j]);
                }
                Console.Write("\n");
            }
            Console.ReadKey();
        }
        static int [] generate(int [] X,int [,] P,int i,int j,int [] Pre) 
        {
            int [] newX = new int [X.Length+1];
            X.CopyTo (newX,0);
            if (i==0 || j == 0)
                return X;
            if (P[i - 1, j] == P[i - 1, j - 1] && P[i - 1, j] == P[i, j - 1] && P[i - 1, j - 1] < P[i, j])
            {
                newX[X.Length] = Pre[i];
                return generate(newX, P, i - 1, j - 1, Pre);
            }
            else if (P[i - 1, j]==P[i, j])
                return generate(X,P,i-1,j,Pre);
            else
                return generate(X, P, i , j-1, Pre);
        }
    }
}

带备忘机制的自顶向下算法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication18
{
    class Program
    {
        static void Main(string[] args)
        {
            int xLength;
            int yLength;
            Console.WriteLine("Input the length of X : ");
            xLength = int.Parse(Console.ReadLine());
            Console.WriteLine("Input the length of Y : ");
            yLength = int.Parse(Console.ReadLine());
            int[,] c = new int[xLength + 1, yLength + 1];
            int[] x = new int[xLength + 1];
            int[] y = new int[yLength + 1];
            for (int i = 0; i <= xLength; i++)
            {
                Console.WriteLine("Input each element of X : ");
                x[i] = int.Parse(Console.ReadLine());
                c[i, 0] = 0;
            }
            for (int i = 0; i <= yLength; i++)
            {
                Console.WriteLine("Input each element of Y : ");
                y[i] = int.Parse(Console.ReadLine());
                c[0, i] = 0;
            }
            Memo_LSC_Length lsc = new Memo_LSC_Length(c, xLength, yLength, x, y);
            int[] res = lsc.Result();
            for (int i = 0; i < xLength; i++)
            {
                for (int j = 0; j < yLength; j++)
                {
                    Console.Write("{0} ", lsc.Record[i, j]);
                }
                Console.Write("\n");
            }
            for (int i = 0; i < res.Length; i++)
            {
                Console.Write("{0} ", res[i]);
            }
            Console.ReadKey();
        }
    }
    class Memo_LSC_Length
    {
        public Memo_LSC_Length(int[,] x, int xLength, int yLength, int[] m, int[] n)
        {
            Record = x;
            X = xLength;
            Y = yLength;
            M = m;
            N = n;
        }
        public int[,] Record
        {
            get;
            set;
        }
        public int X
        {
            get;
            set;
        }
        public int Y
        {
            get;
            set;
        }
        public int[] M
        {
            get;
            set;
        }
        public int[] N
        {
            get;
            set;
        }
        public void LSC_initial()
        {
            for (int i = 1; i <= X; i++)
            {
                for (int j = 1; j <= Y; j++)
                {
                    Record[i, j] = -1;
                }
            }
        }
        public int LSC_Length(int i, int j)
        {
            if (Record[i, j] >= 0)
                return Record[i, j];
            if (M[i] == N[j])
            {
                Record[i, j] = LSC_Length(i - 1, j - 1) + 1;
                return Record[i, j];
            }
            else
            {
                Record[i, j] = LSC_Length(i, j - 1) > LSC_Length(i - 1, j) ? LSC_Length(i, j - 1) : LSC_Length(i - 1, j);
                return Record[i, j];
            }
        }
        public int[] generate(int[] X, int[,] P, int i, int j, int[] Pre)
        {
            int[] newX = new int[X.Length + 1];
            X.CopyTo(newX, 0);
            //Console.Write("{0} ", newX[X.Length]);
            //Console.Write("Hello,world!!");
            if (i == 0 || j == 0)
            {
                return X;
            }
            if (P[i - 1, j - 1] < P[i, j])
            {
                newX[X.Length] = Pre[i];
                //Console.WriteLine("{0}", newX[X.Length]);
                return generate(newX, P, i - 1, j - 1, Pre);
            }
            else if (P[i - 1, j] == P[i, j])
                return generate(X, P, i - 1, j, Pre);
            else
                return generate(X, P, i, j - 1, Pre);
        }
        public int[] Result()
        {
            LSC_initial();
            LSC_Length(X, Y);
            int[] x = new int[0];
            x = generate(x, Record, X, Y, M);
            return x;
        }
    }
}


5个4000比特大状态置换算法的设计与分析 下面是 5 个概念性、实验性的 4000 位可逆置换设计。它们都保证是双射,但未经过密码分析,不可直接用于生产系统。风格分别覆盖:三维 SPN、Feistel、可逆元胞自动机、ARX、宽轨迹/Keccak 式结构。 这 5 个设计分别代表了 SPN、Feistel、元胞自动机、ARX、宽轨迹 Keccak 五种不同风格,覆盖了主流大状态置换的构造思路。再次强调:它们只是实验性概念,若要用于实际协议,必须经过严格安全性分析。 阅读详情

相关推荐

开关电源EMC整改案例-辐射骚扰

2.4.1 获得原始数据。同样的分析可以应用在差模电流的情况, 唯一不同的是, 两根导线的磁场分布是相反的, 磁 场互相抵消, 由于导线中的电流大小相等, 产生的磁场 H 大小相同, 在互相靠近的情况下, 在磁 环内的两个感应磁场大小相同、方向相反, 因此合成之后的感应磁场 B 几乎为 0,对任意一根导 线而言,相当于是一段“无感导线”,对差模电流不会产生任何抑制作用。众所周知, 共模电感的匝数越多, 感量越大, 按道 理来说对共模干扰电流的抑制也会越强烈,对抗辐射 也越有利,然而事实真的如此吗?

经营范围: CTA、SRRC、CCC、移动、电信、联通入库 3496

程序员编程艺术第十一章:最长公共子序列(LCS)问题

程序员编程艺术第十一章:最长公共子序列(LCS)问题 0、前言 程序员编程艺术系列重新开始创作了(前十章,请参考程序员编程艺术第一~十章集锦与总结)。回顾之前的前十章,有些代码是值得商榷的,因当时的代码只顾阐述算法的原理或思想,所以,很多的与代码规范相关的问题都未能做到完美。日后,会着力修善之。 搜遍网上,讲解这个LCS问题的文章不计其数,但...

dinongxu8804的博客 1538

西门子1500 PLC与巴鲁夫RFID实战:从硬件接线到数据读写的完整流程

本文详细介绍了西门子S7-1500 PLC与巴鲁夫RFID系统集成的完整实战流程。内容涵盖从硬件选型、接线、PROFINET网络配置,到在TIA Portal中安装GSD文件、组态设备、分配地址,再到使用标准功能块(如FB31)进行程序架构设计、实现数据读写以及错误诊断。文章重点分享了硬件连接要点、软件配置步骤、数据块管理技巧以及调试中常见问题的解决方案,为工业自动化工程师实施RFID项目提供了清晰的指导。

weixin_29161785的博客 385

lsc的啥吊日常(未完)

今天dfs MLE调了2小时,原因竟是........... sb的日常 之前没删freopen炸OJ,我错了,但我相信记录总会被打破 没事,我们一群250 hzoi yzh就是有素质,有眼光! 啊,证据确凿! (本片博客纯属课下娱乐,与人际关系问题无关!) 转载于:https://www.cnb...

weixin_30949361的博客 137

手动以及使用torch.nn实现前馈神经网络实验

手动以及使用torch.nn实现前馈神经网络 手动实现前馈神经网络解决上述回归、二分类、多分类任务 利用torch.nn解决上述回归、二分类、多分类任务 在多分类任务中使用至少三种不同的激活函数 对多分类任务中的模型评估隐藏层层数和隐藏单元个数对实验结果的影响

m0_52910424的博客 9372

【深度解析】解决 NVIDIA 显卡“掉卡”与 Xid 79 错误:开启持久化模式 (Persistence Mode)

【深度解析】解决 NVIDIA 显卡“掉卡”与 Xid 79 错误:开启持久化模式 (Persistence Mode)

Edward的博客 863

[Algorithms] Using Dynamic Programming to Solve longest common subsequence problem

Let's say we have two strings: str1 = 'ACDEB' str2 = 'AEBC' We need to find the longest common subsequence, which in this case should be 'AEB'.   Using dynamic programming, we want to compare by ...

weixin_34115824的博客 194

KCP(快速可靠UDP)——用带宽换延迟的极致艺术

想象你是一个外卖平台的调度员。这就是KCP的本质——

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 202

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 218

PyMuPDF为PDF文件添加注释

我将介绍如何使用PyMuPDF库来为PDF文件添加注释,包括文本注释、高亮注释、下划线注释等15种注释的使用方法。

布啦啦 2243

在 ABAP 世界把 SAML 2.0 玩明白:跨域 SSO 的通信模式、配置路径与落地实践

摘要 SAML 2.0是ABAP平台实现标准化SSO的推荐方案,提供Front-Channel(浏览器传递SAML报文)和Back-Channel(使用工件绑定通过SOAP兑换断言)两种通信方式。前者包括HTTP Redirect和POST绑定,后者通过Artifact绑定提升安全性。配置重点包括:激活ICF服务、使用SAML2事务码建立信任、设置用户标识映射、选择绑定方式(POST易调试、Artifact更安全)及配置安全策略(签名/加密)。典型流程包括SP-initiated和IdP-initiated

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 293

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 314

高级图像增强——模拟雨天,雾,雪,阳光,阴影,运动模糊,畸变等14种效果,同步扩充标签文件

本文提供了一些高级的,特殊的图像增强方法,具体包括、光。

Limiiiing的博客 1308

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 590

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

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

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 20

IEM模型,地表粗糙度模拟

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

C语言程序设计题|有序数组插入数字冒泡排序

题目要求将一个数插入有序数组末尾,并用冒泡排序实现整体升序。代码先将输入数存入数组最后位置,再通过双重循环进行冒泡排序,每轮将较大元素向后移动,最终输出11个升序元素。该方法虽时间复杂度为O(n²),但符合题目要求,逻辑清晰,适合初学者理解排序原理。

2301_81429079的博客 750

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【算法拾光】模拟|外观数列 + 数青蛙

本文总结两道模拟题解法:外观数列通过迭代统计连续数字个数生成下一项,关键在于处理末尾字符;数青蛙则模拟青蛙叫声“croak”状态转移,维护各阶段青蛙数量,记录最大并发数并确保全部完成。共性在于严格遵循流程、细致处理边界与非法情况,锻炼字符串遍历与状态管理能力。

wuqingyigexiaoba的博客 370

牛客周赛165C题(前后缀性质,递推,排序,枚举)

题目大意:给定长度为 `n` 的数组,选择 `k ∈ [1,n]`,将前 `k` 个元素整体翻转,后面的元素不变。要求操作后的整个数组非递减,统计满足条件的 `k` 的数量。题目链接:https://ac.nowcoder.com/acm/contest/141721/C。时间复杂度:O(nlogn)

2501_94316951的博客 171

408 算法 04|主元素与三元组最小距离:两种“扫描时做决定“的思路

2013(41) 的主元素用摩尔投票一遍选出候选,但真正的考点是"选完必须验票";2020(41) 的三元组最小距离,三指针每次只挪最小的那个,靠的是 D=2×(max−min) 这个恒等式。两套完整 C 代码加真实输出,附官方评分档位表。

m0_56226131的博客 409

【数据结构-3】算法美学之降复杂度

在while循环的循环体内,首先用临时变量保存最后一个位置的数据,再通过for循环把所有元素往后移动一位,最后把tmp中保存的值放到下标为0的位置上去。方法二的思路是:创建新数组,让原数组中后k个数据移动到新数组中前面的位置,让原数组中前numsSize-k个数据移动到新数组中后面的位置,这。这段代码的思路是:三次逆置,第一次逆置前numsSize-k个数据,第二次逆置后k个数据,最后整体逆置。这篇博文分享一道解法不一的算法题,求解过程的目的在于降低算法的时间复杂度,题源力扣。,属于空间换时间的操作。

weixin_44218929的博客 85

算法61,判定是否为字符重排

两字符串能互为重排 ⇔。

sheshibenniaodan的博客 218

算法日常・每日刷题--<动态规划>32

给定严格递增的正整数数组,求最长斐波那契子序列长度。使用二维DP,dp[i][j]表示以arr[i]、arr[j]为最后两项的序列长度,初始化均为2。通过哈希表快速查找前一项target = arr[j] - arr[i],若存在且下标小于i,则状态转移:dp[i][j] = dp[k][i] + 1。遍历更新全局最大长度,最终若结果小于3则返回0。时间复杂度O(n²),空间复杂度O(n²)。

2503_92261635的博客 178

算法札记:几何分布在算法题UVA1262的运用

集卡问题求解核心:将集齐n种优惠券的过程分为n个阶段,每个阶段期望购买次数为 $ \frac{n}{k} $(k为剩余种类数),总期望为 $ n \cdot H_n $(调和数)。通过自洽方程推导单阶段期望,无需几何分布或无穷级数,逻辑清晰且适用于大一水平。例如,n=5时期望约11.42,非5。题目要求以带分数形式输出精确结果,算法上需累加分数并化简。

Keven_11的博客 352

SSL证书选RSA还是ECDSA:公钥算法、CA签名与兼容性怎么核对

申请SSL证书时,RSA和ECDSA该怎么选?先分清站点公钥算法、CA签名算法和TLS实际兼容性,再用隔离OpenSSL实验读取两类材料,核对申请、续期和部署交接,避免只看Signature Algorithm就选错。

谁呀!的博客 399

考拉兹猜想 - 7

本文通过引入虚数单位重构Collatz猜想的迭代逻辑,指出偶数减半与奇数“乘3加1”的过程在虚数坐标下等价于归结操作。关键在于:乘3加1使奇数跃升至偶数,随后持续减半,而虚数单位代表“无限减1”,实现无限向有限的转化。无论初始值如何,减半始终主导,最终归结为4-2-1循环。该视角消解了正向思维中的速度竞争疑虑,证明归结是必然结果。

杨铸人的博客 42
上一篇: SML-Dplab
下一篇: Dynamic programming - 最长单调递增子串问题
Numlogn
博客等级 码龄10年 1粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值