【算法分析与设计】【第十六周】期中小结(中)(未完)

来源:互联网 发布:焓湿图计算软件中文版 编辑:程序博客网 时间:2024/06/07 08:17

  • 期中小结中
    • 拓扑序Special judge
      • Description
      • 核心思想DFSdag
      • 思路
      • 解题代码
      • 时间复杂度
    • 最小和
      • Description
      • 核心思想动态规划
      • 思路
      • 解题代码
      • 时间复杂度

期中小结(中)

总结一道需要花点时间的题,题目本身不难理解。
总结一道动态规划问题。

1004. 拓扑序[Special judge]

Description

在图论中,拓扑序(Topological Sorting)是一个有向无环图(DAG, Directed Acyclic Graph)的所有顶点的线性序列. 且该序列必须满足下面两个条件:

  1. 每个顶点出现且只出现一次.
  2. 若存在一条从顶点 A 到顶点 B 的路径,那么在序列中顶点 A 出现在顶点 B 的前面.

对于一个含有n个节点的有向无环图(节点编号0到n-1),输出它的一个拓扑序.

图的节点数和边数均不多于100000,保证输入的图是一个无环图.

请为下面的Solution类实现解决上述问题的topologicalSort函数,函数参数中n为图的节点数,edges是边集,edges[i]表示第i条边从edges[i].first指向edges[i].second. 函数返回值为有向图的一个拓扑序. 有向图有多个拓扑序时,输出任意一个即可.

class Solution {public:       vector<int> topologicalSort(int n, vector<pair<int, int>>& edges) {    }};

例1:
n = 3,edges = {(0, 1), (0, 2)},函数应返回{0, 1, 2}或者{0, 2, 1}.

例2:
n = 4,edges = {(0, 1), (0, 2), (1, 2), (3, 0)},函数应返回{3, 0, 1, 2}.

注意:你只需要提交Solution类的代码,你在本地可以编写main函数测试程序,但不需要提交main函数的代码. 注意不要修改类和函数的名称.

核心思想:DFS、dag

思路

解题代码

时间复杂度

O(n+e)


1005. 最小和

Description

从数列A[0], A[1], A[2], …, A[N-1]中选若干个数,要求对于每个i(0<=i

class Solution {public:    int minSum(vector<int>& A) {    }};

例1:A = {2, 5, 2},答案为4.

例2:A = {2, 5, 4},答案为5.

注意:你只需要提交Solution类的代码,你在本地可以编写main函数测试程序,但不需要提交main函数的代码. 注意不要修改类和函数的名称.

核心思想:动态规划

思路

解题代码

时间复杂度

O(n)


原创粉丝点击