C++代码:计算武功传承中得道者的功力总值
"""\n分析:\n根据题目给出的师门谱系关系,可以使用深度优先搜索(DFS)来遍历整个家谱,计算得道者的功力总值。\n\n具体实现步骤如下:\n1. 定义一个结构体Node,表示每个人的信息。包括一个bool类型的变量isDao,表示是否为得道者,一个double类型的变量power,表示武功的威力。\n2. 定义一个vectorcpp\n#include <iostream>\n#include <vector>\nusing namespace std;\n\nstruct Node {\n bool isDao; // 是否为得道者\n double power; // 武功威力\n};\n\nvector<Node> tree; // 家谱树\ndouble sum = 0; // 得道者的功力总值\n\nvoid dfs(int cur) {\n if (tree[cur].isDao) { // 当前人是得道者\n sum += tree[cur].power;\n } else { // 当前人不是得道者\n for (int i = 0; i < tree[cur].power; i++) {\n dfs(cur + 1);\n }\n }\n}\n\nint main() {\n int N;\n double Z, r;\n cin >> N >> Z >> r;\n\n tree.resize(N);\n for (int i = 0; i < N; i++) {\n int K;\n cin >> K;\n if (K == 0) { // 得道者\n tree[i].isDao = true;\n cin >> tree[i].power;\n } else { // 非得道者\n tree[i].isDao = false;\n tree[i].power = pow(r, K);\n }\n }\n\n dfs(0);\n\n cout << (int)sum << endl;\n\n return 0;\n}\n\n\n复杂度分析:\n由于需要遍历整个家谱,时间复杂度为O(N),其中N为师门的总人数。空间复杂度为O(N),用来存储家谱树的信息。\n"""\n
原文地址: https://www.cveoy.top/t/topic/pOgA 著作权归作者所有。请勿转载和采集!