光明小学的小朋友们要举行一年一度的接力跑大赛了,但是小朋友们却遇到了一个难题:设计接力跑大赛的线路,你能帮助他们完成这项工作么?
光明小学可以抽象成一张有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阿里校招测评题,光明小学完全图最短路径问题相关推荐

  1. 2019阿里校招测评题 光明小学完全图最短路径问题

    题目: 光明小学的小朋友们要举行一年一度的接力跑大赛了,但是小朋友们却遇到了一个难题:设计接力跑大赛的线路,你能帮助他们完成这项工作么? 光明小学可以抽象成一张有N个节点的图,每两点间都有一条道路相连 ...

  2. 2019阿里校招测评题 物流派送员最短路径问题

    题目: 解题思路: 还是尝试用全排列先去求个解出来,把所有可能的路径都求出来,找出最短的那个. 但是感觉用启发式算法效果会更好,尝试使用两元素优化求解. 代码实现: 全排列版本: public cla ...

  3. 2019阿里校招测评题(编程)

    明小学的小朋友们要举行一年一度的接力跑大赛了,但是小朋友们却遇到了一个难题:设计接力跑大赛的线路,你能帮助他们完成这项工作么? 光明小学可以抽象成一张有N个节点的图,每两点间都有一条道路相连.光明小学 ...

  4. python笔试题奥特曼打怪兽_2019阿里校招测评题,光明小学完全图最短路径问题(python实现)...

    题目:光明小学的小朋友们要举行一年一度的接力跑大赛了,但是小朋友们却遇到了一个难题:设计接力跑大赛的线路,你能帮助他们完成这项工作么? 光明小学可以抽象成一张有N个节点的图,每两点间都有一条道路相连. ...

  5. 2019阿里校招测评——光明小学接力赛(Java)

    合理宣泄下:太久没做题了,脑子锈了~然后拿到题,莫名大脑空白了10分钟,再接着看懂了题目,但就是不晓得怎么下手.所以就计划边写边想(至少把输入,主函数什么的敲进去),但是!!!不晓得是按错了Tab键还 ...

  6. 2019阿里校招面试【前端】(一)

    2019阿里校招面试一面(前端) 问题: 项目里面遇到的困难 promise请求失败如何返回原来页面 call/apply/bind 数组中找某个元素的方法和时间复杂度 前端工程化 继承的方式 跨域 ...

  7. 大疆校招测评题--循环赛问题

    笔者在2022.7参加了大疆的测评题. 其中有道循环赛问题,记录下解题思路. 循环赛问题 六名选手A, B, C, D, E, F进行循环赛. 每两名选手间比赛一次,每名选手每天比赛一场. 五天内完成 ...

  8. 2019 快手校招编程题两道解答

    [编程题] 二进制中有多少个1 时间限制:1秒 空间限制:32768K 把一个32-bit整型转成二进制,其中包含多少个1,比如5的二进制表达是101,其中包含2个1 输入描述: 输入为整型(十进制) ...

  9. 滴滴2016校招测评题(建水库问题)

    一.前言 每周面试题,这周来个简单点,而且最近也在写 Android 自定义 View 系列的文章,欢迎大家关注公众号[于你供读],每周推送面试题,每天推送技术干货. 二.题目 已知每个城市的用水需求 ...

最新文章

  1. C#.NET 中的类型转换
  2. 免费送书啦!玩转3D视界,这本书带你感知立体的世界
  3. 用WDM开发USB驱动程序
  4. Spring AOP原理及拦截器
  5. 解决编译apache出现的问题:configure: error: APR not found . Please read the documentation
  6. php mysql 内存溢出_关于MySQL的整型数据的内存溢出问题的应对方法_MySQL
  7. 51nod 1004 【快速幂】
  8. 4个万无一失的技巧让您开始使用JBoss BRMS 6.0.3
  9. html div element,你能在TypeScript中扩展HTMLDivElement吗?
  10. java 获取 jframe 内容_Java如何获取组件的JFrame?
  11. php 给数组里面压入数组,php array_push()数组函数:将一个或多个单元压入数组的末尾(入栈)...
  12. gitlab主备同步_gitlab实现主备切换集群
  13. 三菱PLC QCPU用户手册(功能解说/程序基础篇)
  14. 字节跳动java面试题,附详细答案解析
  15. CoreAnimation动画入门(总结)
  16. CodeForces 379C -- D - New Year Ratings Change
  17. 奈奎斯特与香农定理_奈奎斯特定理和香农定理解析
  18. 用Dynamips构建能够与真实机器通信的IPSec ***环境
  19. 你知道怎么查看 IP 地址吗?
  20. 绝对值不等式解绝对值二次函数的最值_Simplelife_新浪博客

热门文章

  1. 小软件获取QQ好友是否隐身对你可见
  2. 连续十年亏损,哔哩哔哩估值遭质疑
  3. linux恢复bios出厂设置密码,笔记本bios恢复出厂设置方法【图文详解】
  4. 全志r11运行鸿蒙,全志R11芯片怎么样?全志R11处理器参数
  5. DrawDIBDraw显示图像颠倒的解决方法
  6. P28-前端基础-CSS盒子垂直方向的布局
  7. Mysql - 插入查询数据
  8. vue3+ts 实现图标控制音乐播放
  9. mof定制材料|Cu-MOF-199/铜硫化合物(CuxS)复合材料Cu-MOF/CuxS|ZIF-8/聚乙烯醇复合纳米纤维膜聚乙烯醇PVA
  10. phpyii框架倒叙_Yii框架入口文件index.php功能分