2026/5/18 12:08:02
网站建设
项目流程
网站首页布局设计用什么,设计师专业,网站建设商标在哪个类别,wordpress更新插件微服务的集成测试 华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 100分题型 华为OD机试双机位C卷真题目录点击查看: 华为OD机试双机位C卷真题题库目录#xff5c;机考题库 算法考点详解
其它语言题解链接
华为OD机试双机位C卷 - 微服务的集成测试 (Python C …微服务的集成测试华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 100分题型华为OD机试双机位C卷真题目录点击查看: 华为OD机试双机位C卷真题题库目录机考题库 算法考点详解其它语言题解链接华为OD机试双机位C卷 - 微服务的集成测试 (Python C JAVA JS GO)题目描述现在有n个容器服务服务的启动可能有一定的依赖性有些服务启动没有依赖其次服务自身启动加载会消耗一些时间。给你一个 n x n 的二维矩阵useTime其中useTime[i][i]10 表示服务i自身启动加载需要消耗10suseTime[i][j] 1 表示服务i启动依赖服务j启动完成useTime[i][k]0 表示服务i启动不依赖服务k其实 0 ijk n。服务之间启动没有循环依赖不会出现环若想对任意一个服务i进行集成测试服务i自身也需要加载求最少需要等待多少时间。输入描述第一行输入服务总量 n之后的 n 行表示服务启动的依赖关系以及自身启动加载耗时最后输入 k 表示计算需要等待多少时间后可以对服务 k 进行集成测试其中 1 k n1n100输出描述最少需要等待多少时间(s)后可以对服务 k 进行集成测试用例1输入3 5 0 0 1 5 0 0 1 5 3输出15说明服务3启动依赖服务2服务2启动依赖服务1由于服务123自身加载需要消耗5s所以55515需要等待15s后可以对服务3进行集成测试用例2输入3 5 0 0 1 10 1 1 0 11 2输出26说明服务2启动依赖服务1和服务3服务3启动需要依赖服务1服务123自身加载需要消耗5s10s11s所以5101126s需要等待26s后可以对服务2进行集成测试。用例3输入4 2 0 0 0 0 3 0 0 1 1 4 0 1 1 1 5 4输出12说明服务3启动依赖服务1和服务2服务4启动需要依赖服务123服务123自身加载需要消耗2s,3s,4s,5s所以34512s因为服务1和服务2可以同时启动要等待12s后可以对服务4进行集成测试。用例4输入5 1 0 0 0 0 0 2 0 0 0 1 1 3 0 0 1 1 0 4 0 0 0 1 1 5 5输出11说明服务3启动依赖服务1和服务2服务4启动需要依赖服务12服务5启动需要依赖服务35服务12345自身加载需要消耗1s,2s,3s,4s,5s所以24511s因为服务1和服务2可以同时启动服务3和服务4可以同时启动要等待11s后可以对服务5进行集成测试。题解思路本题采用DFS思路从题目其实可以很容易分析出来一个容器的启动时间自身启动时间 所有依赖服务中最长启动时间.基于1的分析结果就是k容器它所依赖服务的最长时间 它自身启动时间就是结果。求k容器所依赖服务的启动时间与求k容器启动时间问题本质是一样的。这道题就非常适合使用DFS算法解决。可以在普通DFS加入剪枝优化一个服务器的启动时间如果之前被计算过如果再次搜索计算可以直接返回之前缓存的时间。下述代码使用visited和needTime数组实现。code#includestdio.h#includestdlib.hconstintN100;intn,k,time0;intstore[N][N];//每个服务器需要启动的时间作为缓存减少重复搜索intneedtime[N]{0};// 记录是否访问intvisited[N]{0};// 递归获取k的启动时间 启动时间 自身启动时间 所有依赖服务中最长启动时间intdfs(intk){// 复用之前的缓存if(visited[k]1)returnneedtime[k];// 依赖服务的最长时间intmax_time0;for(inti0;in;i){if(i!kstore[k][i]1){inttimedfs(i);if(timemax_time){max_timetime;}}}needtime[k]max_timestore[k][k];visited[k]1;returnneedtime[k];}intmain(){scanf(%d,n);for(inti0;in;i){for(intj0;jn;j){scanf(%d,store[i][j]);}}scanf(%d,k);intresultdfs(k-1);printf(%d,result);}