题目
题目描述
现在有n个容器服务,服务的启动可能有一定的依赖性(有些服务启动没有依赖),其次服务自身启动加载会消耗些时间。
给你一个nxn 的二维矩阵 useTime,其中 useTime[i][i]=10 表示服务i自身启动加载需要消耗10s,useTime[i][j]=1 表示服务i 启动依赖服务i 启动完成,useTime[i][k]=0,表示服务i 启动不依赖服务 k其实 0<= i,j,k< n。服务之间启动没有循环依赖(不会出现环),若想对任意一个服务i进行集成测试(服务追身也需要加载),求最少需要等待多少时间。
输入描述
第一行输入服务总量 n.之后的 n 行表示服务启动的依赖关系以及自身启动加载耗时
最后输入 k 表示计算需要等待多少时间后可以对服务 k 进行集成测试
其中 1 <= k <=n. 1<=n<=100
输出描述
最少需要等待多少时间(s)后可以对服务 k 进行集成测试示例1
输入:
3
5 0 0
1 5 0
0 1 5
3
输出:
15
考点
1:递归
#include <iostream> #include <vector> using namespace std; int countTime(vector<vector<int> > use, int k) { int maxtime = 0; for (int i = 0; i < use.size(); ++i) { if (use[k][i] != 0 && i != k) { maxtime = max(maxtime, countTime(use, i)); } } return maxtime + use[k][k]; } int main() { int n, k; cin >> n; vector<vector<int> > use(n, vector<int>(n)); for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { cin >> use[i][j]; } } cin >> k; int time = countTime(use, k - 1); cout << time << endl; return 0; }