您的位置:首页 > 其它

图实践经典问题一览

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))

/**
* 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: