图实践经典问题一览
2016-05-19 23:33
387 查看
图算是数据结构中比较难的问题,但是在实际中解决的问题也更多。
其中,在图结构中涉及的问题主要有:
图的存储:
邻接表(Adjacency list):为每个节点建立一个链表存放与之连接的点.
邻接矩阵(Adjacency matrix):n*n的矩阵,有边的是1,无边的是0.
最短路径:
Dijkstra:记录起点能够到达的所有节点的最短路径,这样,我们要找的终点一定在其中啊。
DIST(w) = min(DIST(w), DIST(u) + c(u, w))
View Code
其中,在图结构中涉及的问题主要有:
图的存储:
邻接表(Adjacency list):为每个节点建立一个链表存放与之连接的点.
邻接矩阵(Adjacency matrix):n*n的矩阵,有边的是1,无边的是0.
最短路径:
Dijkstra:记录起点能够到达的所有节点的最短路径,这样,我们要找的终点一定在其中啊。
DIST(w) = min(DIST(w), DIST(u) + c(u, w))
/** * Given the number N, return all of the correct brackets. * @param n * @return */ @SuppressWarnings("unchecked") public static ArrayList<String> getBracketsOfN(int n) { @SuppressWarnings("rawtypes") ArrayList[] dp = new ArrayList[n+1]; for(int i=0; i<dp.length; i++) dp[i] = new ArrayList<String>(); dp[0].add(""); dp[1].add("()"); if(n == 0) return dp[0]; if(n == 1) return dp[1]; int count = 2; while(count < n+1) { ArrayList<String> lcount = dp[count]; for(int i=0; i<count; i++) { ArrayList<String> l1 = dp[i]; ArrayList<String> l2 = dp[count-i-1]; for(int j=0; j<l1.size(); j++) { for(int k=0; k<l2.size(); k++) { StringBuffer sb = new StringBuffer(); sb.append(l1.get(j)); sb.append("("); sb.append(l2.get(k)); sb.append(")"); lcount.add(sb.toString()); } } } dp[count++] = lcount; } return dp ; }
View Code
相关文章推荐
- 安卓事件传递机制个人理解版
- ZOJ1586 QS Network
- ZOJ1586 QS Network
- Android 仿写微信里的标签功能
- 0-1背包问题,用滚动数组,动态规划解决
- 关于StringBuffer
- SpringMVC之DispatcherServlet处理请求详解
- C++ 嵌套类
- 一个帖子学会Android开发四大组件
- HDU 2569 彼岸 (不错的递推,值得一看)
- java之ReentrantLock公平锁和非公平锁
- 最长公共子序列(LCS)
- 禁用cookie后session是如何设置的(第一个)
- Java Core和HeapDump
- 6.1、索引--Oracle模式对象
- 洛谷P1156 垃圾陷阱
- 洛谷P1156 垃圾陷阱
- CSDN博客关注点
- Linux下关于find命令的总结
- ACM: uva 11426 -&…