2019阿里校招测评题,光明小学完全图最短路径问题
光明小学的小朋友们要举行一年一度的接力跑大赛了,但是小朋友们却遇到了一个难题:设计接力跑大赛的线路,你能帮助他们完成这项工作么?
光明小学可以抽象成一张有N个节点的图,每两点间都有一条道路相连。光明小学的每个班都有M个学生,所以你要为他们设计出一条恰好经过M条边的路径。
光明小学的小朋友们希望全盘考虑所有的因素,所以你需要把任意两点间经过M条边的最短路径的距离输出出来以供参考。
你需要设计这样一个函数:
res[][] Solve( N, M, map[][]);
注意:map必然是N * N的二维数组,且map[i][j] == map[j][i],map[i][i] == 0,-1e8 <= map[i][j] <= 1e8。(道路全部是无向边,无自环)2 <= N <= 100, 2 <= M <= 1e6。
map数组表示了一张稠密图,其中任意两个不同节点i,j间都有一条边,边的长度为map[i][j]。N表示其中的节点数。
你要返回的数组也必然是一个N * N的二维数组,表示从i出发走到j,经过M条边的最短路径
你的路径中应考虑包含重复边的情况。
样例:
N = 3
M = 2
map = {
{0, 2, 3},
{2, 0, 1},
{3, 1, 0}
}
输出结果result为:
result = {
{4, 4, 3},
{4, 2, 5},
{3, 5, 2}
}
输入样例:
3
2
3 3
0 2 3
2 0 1
3 1 0
输出样例:
[[4, 4, 3],
[4, 2, 5],
[3, 5, 2]]
这是我在C下面用dfs写的代码,没用用剪枝,是一个非常暴力的dfs,看到网上有一个Python的答案是错的,所以自己写了一个,但是考的时候时间太短了没写完,是下来写的。
这个测评对面试、笔试没有任何影响,没写出来也没关系,但是大家还是不要直接复制黏贴我的,万一别人做个查重,你们所有人都复制黏贴我的会被发现的。
主要就是我不写出来不开心,所以自己下来写了。。。。。。。。。
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
#include <stdbool.h>/*
输入样例:3
2
3 3
0 2 3
2 0 1
3 1 0输出样例:[[4, 4, 3],[4, 2, 5],[3, 5, 2]]
*/
/** 请完成下面这个函数,实现题目要求的功能 **/
/** 当然,你也可以不按照这个模板来作答,完全按照自己的想法来 ^-^ **/#define maxVal 100000void dfs(const long N, const long M, const int target,long *maxDis, long** map, int step, int thisPoint, int nowDis)
{if (step == M){if (thisPoint == target){if (nowDis < *maxDis){*maxDis = nowDis;}}return;}for (int nextPoint = 0; nextPoint < N; nextPoint++){if (nextPoint != thisPoint){dfs(N, M, target, maxDis, map, ++step, nextPoint, nowDis + map[thisPoint][nextPoint]);step--;}}}long** Solve(long N, long M, int map_size_row, int map_size_cols, long** map, int* result_size_rows, int* result_size_cols) {long** res = (long**)malloc(map_size_row*sizeof(long*));int _map_init_i = 0;for (_map_init_i = 0; _map_init_i<map_size_row; ++_map_init_i){res[_map_init_i] = (long*)malloc(map_size_row*(sizeof(long)));}for (int j = 0; j < map_size_cols; j ++)for (int i = j; i < map_size_row; i++){long maxDis = maxVal;dfs(N, M, i, &maxDis, map, 0, j, 0);res[j][i] = maxDis;res[i][j] = maxDis;}*result_size_rows = map_size_row;*result_size_cols = map_size_cols;return res;
}int main() {int res_size_rows, res_size_cols;long** res;long _N;scanf_s("%ld", &_N);long _M;scanf_s("%ld", &_M);int _map_rows = 0;int _map_cols = 0;scanf_s("%d", &_map_rows);scanf_s("%d", &_map_cols);long** _map = (long**)malloc(_map_rows*sizeof(long*));int _map_init_i = 0;for (_map_init_i = 0; _map_init_i<_map_rows; ++_map_init_i){_map[_map_init_i] = (long*)malloc(_map_cols*(sizeof(long)));}int _map_i, _map_j;for (_map_i = 0; _map_i < _map_rows; _map_i++) {for (_map_j = 0; _map_j < _map_cols; _map_j++) {long _map_item;scanf_s("%ld", &_map_item);_map[_map_i][_map_j] = _map_item;}}res = Solve(_N, _M, _map_rows, _map_cols, _map, &res_size_rows, &res_size_cols);int res_i, res_j;for (res_i = 0; res_i < res_size_rows; res_i++) {for (res_j = 0; res_j < res_size_cols; res_j++) {printf("%ld ", res[res_i][res_j]);}printf("\n");}return 0;}
求点赞~~~
2019阿里校招测评题,光明小学完全图最短路径问题相关推荐
- 2019阿里校招测评题 光明小学完全图最短路径问题
题目: 光明小学的小朋友们要举行一年一度的接力跑大赛了,但是小朋友们却遇到了一个难题:设计接力跑大赛的线路,你能帮助他们完成这项工作么? 光明小学可以抽象成一张有N个节点的图,每两点间都有一条道路相连 ...
- 2019阿里校招测评题 物流派送员最短路径问题
题目: 解题思路: 还是尝试用全排列先去求个解出来,把所有可能的路径都求出来,找出最短的那个. 但是感觉用启发式算法效果会更好,尝试使用两元素优化求解. 代码实现: 全排列版本: public cla ...
- 2019阿里校招测评题(编程)
明小学的小朋友们要举行一年一度的接力跑大赛了,但是小朋友们却遇到了一个难题:设计接力跑大赛的线路,你能帮助他们完成这项工作么? 光明小学可以抽象成一张有N个节点的图,每两点间都有一条道路相连.光明小学 ...
- python笔试题奥特曼打怪兽_2019阿里校招测评题,光明小学完全图最短路径问题(python实现)...
题目:光明小学的小朋友们要举行一年一度的接力跑大赛了,但是小朋友们却遇到了一个难题:设计接力跑大赛的线路,你能帮助他们完成这项工作么? 光明小学可以抽象成一张有N个节点的图,每两点间都有一条道路相连. ...
- 2019阿里校招测评——光明小学接力赛(Java)
合理宣泄下:太久没做题了,脑子锈了~然后拿到题,莫名大脑空白了10分钟,再接着看懂了题目,但就是不晓得怎么下手.所以就计划边写边想(至少把输入,主函数什么的敲进去),但是!!!不晓得是按错了Tab键还 ...
- 2019阿里校招面试【前端】(一)
2019阿里校招面试一面(前端) 问题: 项目里面遇到的困难 promise请求失败如何返回原来页面 call/apply/bind 数组中找某个元素的方法和时间复杂度 前端工程化 继承的方式 跨域 ...
- 大疆校招测评题--循环赛问题
笔者在2022.7参加了大疆的测评题. 其中有道循环赛问题,记录下解题思路. 循环赛问题 六名选手A, B, C, D, E, F进行循环赛. 每两名选手间比赛一次,每名选手每天比赛一场. 五天内完成 ...
- 2019 快手校招编程题两道解答
[编程题] 二进制中有多少个1 时间限制:1秒 空间限制:32768K 把一个32-bit整型转成二进制,其中包含多少个1,比如5的二进制表达是101,其中包含2个1 输入描述: 输入为整型(十进制) ...
- 滴滴2016校招测评题(建水库问题)
一.前言 每周面试题,这周来个简单点,而且最近也在写 Android 自定义 View 系列的文章,欢迎大家关注公众号[于你供读],每周推送面试题,每天推送技术干货. 二.题目 已知每个城市的用水需求 ...
最新文章
- C#.NET 中的类型转换
- 免费送书啦!玩转3D视界,这本书带你感知立体的世界
- 用WDM开发USB驱动程序
- Spring AOP原理及拦截器
- 解决编译apache出现的问题:configure: error: APR not found . Please read the documentation
- php mysql 内存溢出_关于MySQL的整型数据的内存溢出问题的应对方法_MySQL
- 51nod 1004 【快速幂】
- 4个万无一失的技巧让您开始使用JBoss BRMS 6.0.3
- html div element,你能在TypeScript中扩展HTMLDivElement吗?
- java 获取 jframe 内容_Java如何获取组件的JFrame?
- php 给数组里面压入数组,php array_push()数组函数:将一个或多个单元压入数组的末尾(入栈)...
- gitlab主备同步_gitlab实现主备切换集群
- 三菱PLC QCPU用户手册(功能解说/程序基础篇)
- 字节跳动java面试题,附详细答案解析
- CoreAnimation动画入门(总结)
- CodeForces 379C -- D - New Year Ratings Change
- 奈奎斯特与香农定理_奈奎斯特定理和香农定理解析
- 用Dynamips构建能够与真实机器通信的IPSec ***环境
- 你知道怎么查看 IP 地址吗?
- 绝对值不等式解绝对值二次函数的最值_Simplelife_新浪博客
热门文章
- 小软件获取QQ好友是否隐身对你可见
- 连续十年亏损,哔哩哔哩估值遭质疑
- linux恢复bios出厂设置密码,笔记本bios恢复出厂设置方法【图文详解】
- 全志r11运行鸿蒙,全志R11芯片怎么样?全志R11处理器参数
- DrawDIBDraw显示图像颠倒的解决方法
- P28-前端基础-CSS盒子垂直方向的布局
- Mysql - 插入查询数据
- vue3+ts 实现图标控制音乐播放
- mof定制材料|Cu-MOF-199/铜硫化合物(CuxS)复合材料Cu-MOF/CuxS|ZIF-8/聚乙烯醇复合纳米纤维膜聚乙烯醇PVA
- phpyii框架倒叙_Yii框架入口文件index.php功能分