内容提要
华为软件精英挑战赛以智慧港口为主题,考查机器人和船只寻路调度算法。比赛中,寻路算法是关键,A*算法足够。机器人避障可使用朴素方法,船只避障较困难。调度策略重要,利用初始化时间、优化机器人取货目标、减少总寻路长度和货物拾取价值。比赛中学到了代码审查、分支版本控制、UML类图、寻路算法、标准错误流、打日志的重要性等。协作中存在问题,版本管理荒废。比赛强迫学习新东西,熬夜创造新记录。
延伸解读
算法实现的关键挑战
文章指出,寻路算法是比赛核心,A*算法足以应对,但船只寻路因体积和不可逆移动而复杂。机器人避障可用朴素方法,船只避障则困难,需考虑不可逆性。调度策略需优化机器人取货目标,减少总寻路长度和货物拾取价值。这些点揭示了实际工程中算法选择的权衡。
工程实践中的学习收获
作者通过比赛接触了代码审查、分支版本控制、UML类图等工程实践,并被迫了解标准错误流和打日志的重要性。这些技能在平时独立开发中较少涉及,比赛环境提供了实践机会。同时,多线程编程涉及原子变量与锁,扩展了知识面。
团队协作的教训
协作中暴露出缺乏固定共同工作时间、沟通不足、工作重复和版本管理荒废等问题,后期甚至通过传压缩包共享代码。这反映了团队项目中的常见痛点,提醒读者在协作中需建立规范流程和沟通机制,以避免效率损失。
环境与工具的经验
作者尝试了WSL和双系统,发现WSL折腾无用,最终在队友帮助下安装双系统。还发现mingw的sleep_for无法准确阻塞主线程,以及标准库容器和算法的正确使用方式。这些经验对开发环境配置和代码编写有参考价值。
Q&A
华为软件精英挑战赛的主题是什么?
比赛的主题是智慧港口,考查机器人和船只的寻路调度算法。
在比赛中使用了哪些寻路算法?
比赛中使用了A*算法,适用于机器人寻路,但船只寻路较为复杂。
比赛中遇到了哪些协作问题?
比赛中存在缺乏沟通、版本管理荒废和工作重复的问题。
参加比赛后学到了哪些重要知识?
学到了代码审查、分支版本控制、UML类图、寻路算法和打日志的重要性。
比赛中调度策略的重要性体现在哪里?
调度策略重要在于优化机器人取货目标,减少总寻路长度和货物拾取价值。
比赛对个人能力的提升有哪些具体影响?
比赛强迫学习新知识,提升了个人能力,并创造了新的记录。