java 有向图任意2点之间所有路径

i_willh 2016-12-12 02:29:23


获取任意2点之间的所有路径,同时路径允许回路,比如从C->C:允许有如下路径
CDC
CEBC
CEBCDC
CDCEBC
CDEBC
CEBCEBC
CEBCEBCEBC
也就是说一条路径最多允许3站重复,比如:CEBCEBCEBC, 站点C /B 就重复了3次
...全文
1083 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
狸狸守护者 2017-07-17
  • 打赏
  • 举报
回复
有解决思路,穷举法,限定路径深度。 从C开始,按位数展开顶点,递归处理;其中每个顶点只有几个可能展开,极大提升处理效率 数据结构是邻接表。列出核心代码

public List<String> findLessThenLength(int length){
	for(int i=2; i<=length; i++){
		this.findAtLength(i);
	}
	return all;
}

public void findAtLength(int length){
	find(start, 0, length);
}

public void find(String s, int i, int n) {
	// 保存上一次的字符串
	String temp = s;
	// 判断是否符合要求
	if (s.length() == n) {
		// 过滤:1.相邻的字母不重复
		if(isValid(s)){
			result.add(StringHelper.convertRouteWithIndex(s));
		}
		return;
	}
	// 从寻找点开始循环
	// 减少寻址范围
	String tempLast = temp.substring(temp.length() - 1);
	String tempSeed = neighborMap.get(tempLast);
	for (int k = i; k < tempSeed.length(); k++) {
		s = temp;
		s += tempSeed.charAt(k);
		find(s, 0, n);
	}
}
嗜血枫叶 2017-05-22
  • 打赏
  • 举报
回复
楼主可以解决了吗?可以贴下java源码让我学习一下吗?

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧