2019华为软挑代码总结-交通规则模拟
文章目录
- 前言
- 三、数据读入后怎么跑呢?
- 总结
- 四、怎么看效果?
前言
以前一份代码的阅读,2019华为软挑
三、数据读入后怎么跑呢?
思路:
1、创建地图类,将地图中每个路口到其他路口最短路径保存。
2、将所有车,路口,路对象指针封装进地图类。
3、使用FLOYD将所有车辆行驶路径确定下来,跑不就出结果了么…
有那么简单就好了。实验中所有车辆一起出发,立即造成交通堵塞。
咋办?说白了,交通规则怎么能不遵守呢…
1、编写交通规则算法。(交通规则逻辑太难了,我们一辆一辆跑,第一辆到终点开始第二量,依次跑完,这样不会造成堵塞吧。排在第N名,看样子这样不行)
2、老老实实写规则吧。(做到现在居然才过了1周)
3、画程序执行(交通规则)逻辑图。
代码如下(示例):
code的思路:
//模拟交通规则
bool DynamicMap::TrafficRules()
{int dex = systemRunningTimes;while (!allCarsFinished){ //一个时间片更改一次路径//---第一步,遍历每个节点上的道路的车辆状态---std::vector<Cross>::iterator cross_iter = m_cross_list.begin();for (; cross_iter != m_cross_list.end(); cross_iter++){}//----第二步:处理路口上和道路上所有处于等待状态的车辆---int lastWaitingCarsNumber = -1;//记录被锁了多少次int unLockedCount = 0;//只有当所有的节点车都不处于等待状态,才进行下一步std::vector<int> allWaitingCrossIndex = GetWaitingCrossIndex();while (!allWaitingCrossIndex.empty()){//遍历所有处于等待的路口//更新allWaitingCross//判断死锁//解死锁}if (UnLock_Falied == true)return false;//驱使车库里边的车出来,理论先按出发时间升序调度,再按照路口id升序调度,最后按照车辆id升序调度h//1、检查路上一共有多少辆车在跑//2、路上的车小于Setting_MAX_Car_MUN辆就继续发,发到Setting_MAX_Car_MUN辆车//通过路上和车库车数总和,判断是否所有车都到了终点if (sumRunnningCars == 0){int carsNumberInGarage = 0;//得到所有节点车库还有多少车没有发if (carsNumberInGarage == 0){//所有车库没车了saveAnswer("config2/answer.txt");return true;}}}
}
然后开始填函数了,大家一起分工,怼起来了。
bool DynamicMap::TrafficRules()
{//此处省略无数行代码。
}
总结
em…,看完了,整体来说这个交通规则逻辑比较难盘,能盘清逻辑基本就不难了,但是没有一个视觉效果,调试起来真不爽。然后就有了下一章。
四、怎么看效果?
没啥思路,有个大神分享了自己的QT源码。拿过来可视化自己的算法。Em…
这是地图整个的可视化样子:
这是具体的信息:
车辆不同颜色表示不同优先级的车辆。数据都显示在可视化的窗口中,棒棒哒。。。
下面详细分析一下QT的代码吧:
主要的架构:
1、画板是QGraphicsView类的view对象
2、内容是写在QGraphicsScene类的scence对象
3、元素是QGraphicsItem类的item对象
(只摘抄一丁丁丁的代码。)
int main()
{class myclass : public QGraphicsItem
{public:myclass();~myclass();
}QGraphicsItem* item = new myclass();myclass继承(实现多态)item->setPos(x,y);QGraphicsScene* scene;(scene是个QGraphicsScene对象)scene->clear();(清理原画板)准备刷新显示下一步scene->addItem(QGraphicsItem* item);view->setScene(scene);(view是个QGraphicsView对象)
}
感谢陪我参加比赛的同学。写一个博客记录一下。
2019华为软挑代码总结-交通规则模拟相关推荐
- 2020华为软挑热身赛代码开源-思路大起底(华为软件精英挑战赛编程闯关)
本文首发于个人公众号[两猿社],后台回复[华为],获取完整开源代码链接. 昵称:lou_shang_shi_bian_tai 成绩:0.032 社长没有针对硬件做任何优化,热身赛成绩也一般.但有些比赛 ...
- 2021华为软挑部分答疑——哪些你有错却总是找不到的地方,我来带你找啦(含标准输入代码)
前期工作: 2021华为软挑初探--代码实现 2021华为软挑再探--代码实现 1 关于打包 在windows系统下,先把你写的程序写在src里面的CodeCraft-2021里面 然后在这个页面,将 ...
- O准备如何苟进复赛圈?华为软挑开挂指南(附赛题预测)
这篇文章纯粹是心血来潮,原因是去年上传到github的参赛代码,前几天又有两个人star和fork了. 记得star热潮还是去年4月复赛刚结束的那几天,厚着脸皮在八大赛区的群里发消息求关注,之后就陷入 ...
- 2020华为软挑热身赛-这些坑我帮你踩过了(华为软件精英挑战赛编程闯关)
本文始发于个人公众号[两猿社]. 声明,为保证比赛公平,本文不会提供比赛源码,仅提供思路与踩坑经验. 他来了,他来了,他带着面试绿卡走来了. 他来了,他来了,他带着20w大奖走来了. 一年一度的华为软 ...
- 华为软挑赛2023-初赛笔记
前言 比赛介绍 官方链接: 2023华为软件精英挑战赛--普朗克计划 (huaweicloud.com) 赛题介绍 场景介绍 官方赛题介绍: 2023华为软件精英挑战赛初赛赛题及相关材料发布_2023 ...
- 华为软挑赛2023-复赛笔记
前言 比赛介绍 参考初赛博客: 华为软挑赛2023-初赛笔记_没有梦想的大白兔的博客-CSDN博客 赛题变动 官网赛题: 华为云论坛_云计算论坛_开发者论坛_技术论坛-华为云 (huaweicloud ...
- 2022华为软挑比赛(初赛笔记)
文章目录 2022华为软挑(初赛笔记) 1. 赛题要求 2. 解决方案 2.1 挑选适合的边缘节点 2.2 第一轮:最大分配 2.3 第二轮:均值分配 总结 本文仓库地址: Github-CodeCr ...
- 2018华为软挑--模拟退火+FF解决装箱问题【C++代码】
算法简介: 装箱问题是一个NP完全问题,求解全局最优解有很多种方法:遗传算法.禁忌搜索算法.蚁群算法.模拟退火算法等等,本次使用模拟退火,它的优点是在参数合适的情况下基本上可以100%得到全局最优解, ...
- 2022华为软挑编程问题报错总结
for i in number_feature: TypeError: 'int' object is not iterable的错误 错误原因:是因为在python里,整型(int)数据是不能直接用 ...
最新文章
- 小麦盒子cdn_阿里云CDN入门使用配置
- 【Usaco2014Open银组】照相(pairphoto)
- JavaWeb(六)——HttpServletResponse、HttpServletRequest
- depends用于测试程序运行所缺少的文件,可以帮我们很快找到问题
- 同等条件下,杂交水稻是否增产?
- stm32c8t6+bq76940 930 资料stm32c8t6+bq76940 锂电池管理系统(BMS)
- 固态硬盘和机械硬盘的区别(7大区别,简单易懂)
- 学习 Hybrid Beamforming for Millimeter Wave Systems Using the MMSE Criterion
- android 停止服务方法,Android编程实现开始及停止service的方法
- 学计算机高中应选什么科目,学计算机高中需要选哪三科?高中自选三科怎么上课?...
- 电子计算机技术人才需求,电子与信息技术专业人才需求调研报告.pdf
- 使用python修复文件乱码
- 开奖名单公布!百度超级链专属好礼有你一份,速戳!
- 删除微信文件服务器,局域网微信存储空间怎么清理
- Java实现QQ邮箱验证
- linux-防火墙开放端口
- 《Java8实战》第3章 Lambda 表达式
- 学python还是计算机三级,考试无忧全国计算机等级考试python(python二级证书有用吗)...
- 微信看看对方是不是把你删除了
- 计算机视觉算法岗 面试经验 (转载)
热门文章
- Fireworks MX 2004 矢量工具-Mac按钮(转)
- 记录开发一款安卓便签的过程
- 【PC企业页面制作】
- python基础总结:1.7、模块
- 0基础玩转C语言—初识C语言(上)
- mysql连接提示Host 'XXX' is not allowed to connect to this MySql server
- pybind11使用教程笔记__4.3_binding STL containers -- opaque types
- 解读JIMDB 京东分布式缓存与高速KV存储
- Android Studio之library工程中不能使用switch-case语句访问资源ID
- 奔跑吧Linux内核入门篇实验