基于遗传算法的工序顺序柔性车间调度代码,关键是工序顺序柔性的问题(使用matlab进行实现)
1条回答 默认 最新
- 雷威工作室 2022-07-17 13:01关注
一、方法论
先解决问题,然后再去优化,或者别的复杂度更低的方法。比如,遇到一些题,可以先使用常规方法,比如暴力破解之类的笨办法,先保证实现,这样心态会更好一点,利于找到更优的方法。
注意一些关键词,尤其是对一些限定敏感(数字),既然出现这些限定输入形式的关键词,说明这些是高效解法的突破口,比如
有序、只出现两次、
对于在字符串、数组之类的数据结构,寻找诸如“最大”、“最短”等的目标,可以考虑到双指针的方法,诸如快慢指针、滑动窗口,双指针只是比较常用,甚至有些需要三指针甚至更多的指针。
多练习,多看优秀的题解,总结套路,慢慢就熟了。
leetcode 官方题解真是精华,讲述了多种方法,让人耳目一新,如果要提高,一定要多看看。当然一些大佬写的题解也很精彩。我觉得光刷题过了就行的做法成长不是很快,多看看优秀的题解才能进步更快,也能开阔眼界。
理解递归确实是很伤脑筋的事情,大方向是,其实是和迭代相反的方向,递归先“递”到末尾,然后从末尾开始计算,然后想办法“归回来”。
二、具体实践
2.1、双指针
又称为快慢指针,快慢指针在很多算法题会使用,大多是给一个数组或者字符串,找到符合特定规则的子序列。
另外也有滑动窗口的用法,其实也是使用双指针的方法,利用左右指针有规则的滑动,从而获取满足条件的值。以下是 leetcode 对应的题目:
75、Sort Colors
167、两数之和 II - 输入有序数组
209.、长度最小的子数组
344、反转字符串
80、删除有序数组中的重复项 II
2.2、字母相关(字符串等)
遇到字母的问题要想到利用字母也是数字的本质,结合数组随机访问的优秀特点,建立一个256的数组大小,可以很方便的得到该字母之前的情况(比如判断是否出现过),时间复杂度只有O(1),秒杀普通的循环遍历比较。以下是 leetcode 对应的题目:
3、无重复字符的最长子串
2.3、利用哨兵简化问题
哨兵节点广泛应用于树和链表中,如伪头、伪尾、标记等,它们是纯功能的,通常不保存任何数据,其主要目的是使链表标准化,如使链表永不为空、永不无头、简化插入和删除。
作者:LeetCode
链接:https://leetcode-cn.com/problems/remove-linked-list-elements/solution/yi-chu-lian-biao-yuan-su-by-leetcode/
来源:力扣(LeetCode)在一些问题中,对于边界的处理往往需要特定的处理方法,比如链表的头尾节点的处理,这时候加入额外的节点去充当边界,就能够简化处理的细节。
203、 移除链表元素
206、 反转链表
2.4、链表的使用
其实链表就那点东西:指向下一个节点的指针和当前值(这里主要指的是单链表),最重要的是不要在指针切换的时候,把链路搞断了,然后就乱了。
还是多练习,就会熟练了,没有别的方法。2、两数相加
2.5、位运算
掌握一些位运算的技巧,能够让很多题目得到很简单的做法。
总结于此:位运算的一些常用技巧总结461、 汉明距离(注:汉明距离广泛应用于多个领域。在编码理论中用于错误检测,在信息论中量化字符串之间的差异)
解决评论 打赏 举报无用 2
悬赏问题
- ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
- ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
- ¥15 如何在炒股软件中,爬到我想看的日k线
- ¥15 seatunnel 怎么配置Elasticsearch
- ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
- ¥15 (标签-MATLAB|关键词-多址)
- ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
- ¥500 52810做蓝牙接受端
- ¥15 基于PLC的三轴机械手程序
- ¥15 多址通信方式的抗噪声性能和系统容量对比