文章目录

  • 前言
  • 三、数据读入后怎么跑呢?
  • 总结
  • 四、怎么看效果?

前言

以前一份代码的阅读,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华为软挑代码总结-交通规则模拟相关推荐

  1. 2020华为软挑热身赛代码开源-思路大起底(华为软件精英挑战赛编程闯关)

    本文首发于个人公众号[两猿社],后台回复[华为],获取完整开源代码链接. 昵称:lou_shang_shi_bian_tai 成绩:0.032 社长没有针对硬件做任何优化,热身赛成绩也一般.但有些比赛 ...

  2. 2021华为软挑部分答疑——哪些你有错却总是找不到的地方,我来带你找啦(含标准输入代码)

    前期工作: 2021华为软挑初探--代码实现 2021华为软挑再探--代码实现 1 关于打包 在windows系统下,先把你写的程序写在src里面的CodeCraft-2021里面 然后在这个页面,将 ...

  3. O准备如何苟进复赛圈?华为软挑开挂指南(附赛题预测)

    这篇文章纯粹是心血来潮,原因是去年上传到github的参赛代码,前几天又有两个人star和fork了. 记得star热潮还是去年4月复赛刚结束的那几天,厚着脸皮在八大赛区的群里发消息求关注,之后就陷入 ...

  4. 2020华为软挑热身赛-这些坑我帮你踩过了(华为软件精英挑战赛编程闯关)

    本文始发于个人公众号[两猿社]. 声明,为保证比赛公平,本文不会提供比赛源码,仅提供思路与踩坑经验. 他来了,他来了,他带着面试绿卡走来了. 他来了,他来了,他带着20w大奖走来了. 一年一度的华为软 ...

  5. 华为软挑赛2023-初赛笔记

    前言 比赛介绍 官方链接: 2023华为软件精英挑战赛--普朗克计划 (huaweicloud.com) 赛题介绍 场景介绍 官方赛题介绍: 2023华为软件精英挑战赛初赛赛题及相关材料发布_2023 ...

  6. 华为软挑赛2023-复赛笔记

    前言 比赛介绍 参考初赛博客: 华为软挑赛2023-初赛笔记_没有梦想的大白兔的博客-CSDN博客 赛题变动 官网赛题: 华为云论坛_云计算论坛_开发者论坛_技术论坛-华为云 (huaweicloud ...

  7. 2022华为软挑比赛(初赛笔记)

    文章目录 2022华为软挑(初赛笔记) 1. 赛题要求 2. 解决方案 2.1 挑选适合的边缘节点 2.2 第一轮:最大分配 2.3 第二轮:均值分配 总结 本文仓库地址: Github-CodeCr ...

  8. 2018华为软挑--模拟退火+FF解决装箱问题【C++代码】

    算法简介: 装箱问题是一个NP完全问题,求解全局最优解有很多种方法:遗传算法.禁忌搜索算法.蚁群算法.模拟退火算法等等,本次使用模拟退火,它的优点是在参数合适的情况下基本上可以100%得到全局最优解, ...

  9. 2022华为软挑编程问题报错总结

    for i in number_feature: TypeError: 'int' object is not iterable的错误 错误原因:是因为在python里,整型(int)数据是不能直接用 ...

最新文章

  1. 小麦盒子cdn_阿里云CDN入门使用配置
  2. 【Usaco2014Open银组】照相(pairphoto)
  3. JavaWeb(六)——HttpServletResponse、HttpServletRequest
  4. depends用于测试程序运行所缺少的文件,可以帮我们很快找到问题
  5. 同等条件下,杂交水稻是否增产?
  6. stm32c8t6+bq76940 930 资料stm32c8t6+bq76940 锂电池管理系统(BMS)
  7. 固态硬盘和机械硬盘的区别(7大区别,简单易懂)
  8. 学习 Hybrid Beamforming for Millimeter Wave Systems Using the MMSE Criterion
  9. android 停止服务方法,Android编程实现开始及停止service的方法
  10. 学计算机高中应选什么科目,学计算机高中需要选哪三科?高中自选三科怎么上课?...
  11. 电子计算机技术人才需求,电子与信息技术专业人才需求调研报告.pdf
  12. 使用python修复文件乱码
  13. 开奖名单公布!百度超级链专属好礼有你一份,速戳!
  14. 删除微信文件服务器,局域网微信存储空间怎么清理
  15. Java实现QQ邮箱验证
  16. linux-防火墙开放端口
  17. 《Java8实战》第3章 Lambda 表达式
  18. 学python还是计算机三级,考试无忧全国计算机等级考试python(python二级证书有用吗)...
  19. 微信看看对方是不是把你删除了
  20. 计算机视觉算法岗 面试经验 (转载)

热门文章

  1. Fireworks MX 2004 矢量工具-Mac按钮(转)
  2. 记录开发一款安卓便签的过程
  3. 【PC企业页面制作】
  4. python基础总结:1.7、模块
  5. 0基础玩转C语言—初识C语言(上)
  6. mysql连接提示Host 'XXX' is not allowed to connect to this MySql server
  7. pybind11使用教程笔记__4.3_binding STL containers -- opaque types
  8. 解读JIMDB 京东分布式缓存与高速KV存储
  9. Android Studio之library工程中不能使用switch-case语句访问资源ID
  10. 奔跑吧Linux内核入门篇实验