首页 > 其他分享 >存钱计划(三)

存钱计划(三)

时间:2024-05-19 15:30:00浏览次数:19  
标签:10 -- 60 计划 输入 存钱 店铺 WY

存钱计划(三)
时间限制(普通/Java):1000MS/30000MS 内存限制:65536KByte
描述
TZC的店铺比较多,上次WY随便走只要能走到就行,现在他学聪明了。WY去买东西的话,确定一家店以后,当然他先要想想怎么样走到那家店走的路最少。店与店之间是有走的方向的,从店A到店B可以,店B到店A未必可以。店与店之间是有一定距离的。

上面就是路线,为方便起见,店铺都用数字表示,0表示WY的起点,店与店之间以及起点与店距离用d表示。WY从0开始到4店铺 那么最短路线为0-->3-->2-->4 总长为 60。

如果从0店铺开始到1店铺最短路线只有0-->1 总长 10。

当然也有可能没有路的情况。

输入
输入有多组测试数据。

每组数据的第一行为整数n(n<=10),表示店铺总数。所有店铺的编号为0~n-1。

接下来有若干行,每行为3个整数
a b t
表示a编号的店铺走向b编号的店铺之间的一条路径,长度为t。0<=a,b<n(为有向路径,不能反向行走)。

当a b t的值为0 0 0 表示店铺之间的路径输入完毕,不做任何处理。

最后一行输入店铺的编号k(k<n)

输入n为0时表示结束程序。

输出
输出从店铺0到k店铺的最短路线的长度。如果没有路的话,输出 NO WAY!

样例输入
5
0 1 10
0 3 30
0 4 100
1 2 50
2 4 10
3 2 20
3 4 60
0 0 0
4
5
0 1 10
2 0 50
0 3 10
0 0 0
2
0

样例输出
60
NO WAY!
提示
简单最短路径问题

采用Dijkstra算法;
每次选择离A(初始开始的那个点)最近的那个点,然后更新就好啦。
算法代码:

点击查看代码

void dijkstra(){
	int i,j;
	for(i=0;i<nj;i++)//nj就是多少个店 
		dis[i]=INF;//全部初始化为最大; 
	dis[0]=0; //还没开始,先初始化为0; 
	memset(visited,0,sizeof(visited));//来记录是否遍历过该点; 
	for(i=0;i<nj;i++)
	{
		int mark=-1,mind=INF;//mind 来记录最小的值,最优的解; 
		for(j=0;j<nj;j++)
		{
			if(!visited[j]&&dis[j]<mind)//最开始一定是第一个点 起点
			{
				mind=dis[j];
				mark=j;
			}
		}
		if(mark==-1)//全部遍历完了 
			break;
		visited[mark]=1;//记录该点,变成1吧! 
		for(j=0;j<nj;j++)
		{
			if(!visited[j]&&dis[mark]!=INF&&mp[mark][j]!=INF)//该点是否遍历过&&该点值不是无穷大&&图上对应的也不是无穷大,这边意思是mp图上还没更新带dis上所以也判断一下; 
			{
				dis[j]=min(dis[j],dis[mark]+mp[mark][j]);//找到最小,最优化的,更新dis表! 
			}
		}
	}
}

学习参考来源: [https://blog.csdn.net/achiberx/article/details/10771671]()

推荐up讲解Dijkstra算法:
https://www.bilibili.com/video/BV1uT4y1p7Jy/

标签:10,--,60,计划,输入,存钱,店铺,WY
From: https://www.cnblogs.com/maomaotouou/p/18183321

相关文章

  • 使用django_celery_beat在admin后台配置计划任务
    使用步骤安装包pipinstalldjango-celery-beatapp注册app注册INSTALLED_APPS=[....'django_celery_beat',]配置文件:屏蔽原来的调度器CELERY_BEAT_SCHEDULER='django_celery_beat.schedulers.DatabaseScheduler'设置时区LANGUAGE_CODE='z......
  • 第12周]比较不同团队的绩效评估方法;提出自己团队的绩效评估计划
    针对我的团队制定的绩效评估计划包括:1.目标设定阶段:与每位团队成员一对一会谈,讨论和确认接下来一个时间段的SMART目标或OKRs。确保目标与公司的整体战略一致。2.中期检查:在目标期限的中间阶段,举行简短会议,检查每位成员的进度。这是调整目标、解决问题和提供支持的机会。中期检......
  • 比较不同团队的绩效评估方法;提出自己团队的绩效评估计划在学习通提交解答的同时,可以
    ]比较不同团队的绩效评估方法;提出自己团队的绩效评估计划在学习通提交解答的同时,可以同步发布在团队和个人博客上,作为学习心得体会,记录下来【第二组】答:不同团队的绩效评估方法会因公司文化、业务需求和团队特点而有所不同。以下是一些常见的团队绩效评估方法,以及可能适用于你......
  • 超简洁的todolist工具,电脑桌面高效计划管理软件
    对于上班族来说,在电脑上使用一款高效计划管理软件至关重要。这样的工具不仅能帮助我们清晰地规划和追踪工作任务,还能有效提高工作效率,减少遗漏和延误。例如,当我们面临多个项目并行时,通过管理软件可以一目了然地查看各项任务的进度和优先级,从而合理分配时间和精力。那么,哪款电脑桌......
  • 加固计划书
    加固计划书SDL介绍安全开发生命周期(SDL)是一种软件开发方法论,旨在通过将安全性纳入软件开发的各个阶段来创建更安全、更健壮的软件。SDL由一系列阶段和活动组成,涵盖了从需求分析到维护的整个软件开发生命周期。以下是SDL的主要阶段和相关活动:需求分析阶段:安全需求收集:确定......
  • 计划做点事情-跳槽
    【最近想做什么了】最近想跳槽了【为什么要做这个】现在的待遇有点低,或者说是太低了,想起来就觉得惨,难受,羞愧;目前看,在当前公司没有发展前景,升级调薪机会不大,也太慢了;转岗OD要再等一年多,而且,政策千变万化,到时候大概率就不满足要求了,也可能拿不到什么好待遇;通勤辛苦,地铁久,开车......
  • SQLServer统计监控SQL执行计划突变的方法
    使用动态管理视图(DMVs)来检测SQL执行计划的突变,你需要关注那些能够提供查询执行统计和计划信息的视图。以下是一些可以用于此目的的DMVs以及相应的查询示例:sys.dm_exec_query_stats:这个视图提供了关于SQLServer中查询执行的统计信息,包括CPU时间、总工作时间、执行次数等。SEL......
  • 使用windows任务计划程序时提示管理员拒绝
    使用Windows任务计划程序时提示管理员拒绝在Windows操作系统中,任务计划程序是一个非常实用的工具,可以用来定时执行一些特定的任务。然而,在使用过程中,可能会遇到一些问题,例如在使用任务计划程序时提示管理员拒绝。本文将介绍这个问题的原因以及解决方法。一、问题原因在使用Win......
  • OpenAI 发布 AI 生成图片检测器;特斯拉计划在中国测试自动驾驶出租车丨 RTE 开发者日报
      开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑......
  • JMeter TestPlan(测试计划)
    一前言环境:window10JMeter5.3TestPlanTestPlan是构建Jmeter的第一步,也是学习JMeter首先接触到的一个东西,但之前却经常忽视了它,把目光放在了线程组及后面的组件上UserDefinedVariables如上,TestPlan里面也可以定义变量,连名字都和线程组里面定义变量的名字一样。但是它俩......