admin管理员组文章数量:1130349
腾讯
入口:
潜入工具:
1 (function(window){2 var 3 //初始化最大值4 max = 0, 5 //记录遍历结点的值6 levelPath = [],7 8 finalKeyPathStr = '',9
10 ShortPathVal = window.ShortPathVal= function(dataArr){
11 trvaseGraph(createGraph(dataArr),max);
12 return finalKeyPathStr;
13 }
14
15 //邻接表的形式创建无向图
16 function createGraph(arr){
17 var
18 //头结点
19 head={},
20 //父结点的数组,每个父节点都包括左/右子结点
21 lastLevelObjects=[];
22 for(var i=0;i<arr.length;i++){
23 var newArr= arr[i].split(","),
24 levelObjects=[];
25 for(var j=0;j<newArr.length;j++){
26 var o={};
27 o.value = newArr[j];
28 o.level = i+1;
29 levelObjects.push(o);
30 if(j===0 && i===0){
31 //设置头结点
32 head=o;
33 break;
34 }
35 if(j-1>=0)
36 //设置右边的子结点
37 lastLevelObjects[j-1].rightObject=o;
38 if(j<lastLevelObjects.length)
39 //设置左边的子结点
40 lastLevelObjects[j].leftObject=o;
41 }
42 //重置lastLevelObjects为对象(当前的level属性的值)数组
43 lastLevelObjects=levelObjects;
44 }
45 return head;
46 }
47 //递归遍历图找出求得最大值的路线
48 function trvaseGraph(start,currentValue){
49 //保证levelPath的长度小于当前结点的level属性值,避免多余的“脏”数据
50 while(levelPath.length>=parseInt(start.level)) levelPath.pop();
51
52 levelPath.push(start.value);
53
54 if(start.leftObject==null && start.rightObject==null){
55 //在当前遍历中遍历到最后一层子结点的value和值
56 currentValue +=parseInt(start.value);
57 if(max<currentValue){
58 var route="";
59
60 //重置max
61 max=currentValue;
62 for(var i=levelPath.length-2;i>=0;i--){
63 route=levelPath[i]+'-->'+route;
64 }
65 route+=levelPath[levelPath.length-1];
66 finalKeyPathStr="Path:"+route+" MaxValue:"+max;
67 }
68 return;
69 }
70 //在当前遍历中未遍历到最后一层子结点的value和值
71 currentValue+=parseInt(start.value);
72 if(start.leftObject!=null){
73 //遍历左边子结点
74 trvaseGraph(start.leftObject,currentValue);
75 }
76
77 if(start.rightObject!=null){
78 //遍历右边子结点
79 trvaseGraph(start.rightObject,currentValue);
80 }
81 }
82
83 })(window)
84
85 var dataArr =["188",
86 "188,112",
87 "105,105,194",
88 "142,166,191,129",
89 "171,172,134,127,127",
90 "131,152,160,162,165,134",
91 "102,167,102,180,125,153,126",
92 "111,122,131,188,136,125,190,109",
93 "168,160,188,126,164,175,181,128,163",
94 "114,148,121,111,162,102,151,182,134,186",
95 "126,102,166,183,161,174,159,187,113,198,159",
96 "191,143,196,186,156,103,112,124,200,140,183,124"];
97 console.log(ShortPathVal(dataArr)); View Code
潜入地图:
成功潜入!!!
DEMO:/
转载于:.html
腾讯
入口:
潜入工具:
1 (function(window){2 var 3 //初始化最大值4 max = 0, 5 //记录遍历结点的值6 levelPath = [],7 8 finalKeyPathStr = '',9
10 ShortPathVal = window.ShortPathVal= function(dataArr){
11 trvaseGraph(createGraph(dataArr),max);
12 return finalKeyPathStr;
13 }
14
15 //邻接表的形式创建无向图
16 function createGraph(arr){
17 var
18 //头结点
19 head={},
20 //父结点的数组,每个父节点都包括左/右子结点
21 lastLevelObjects=[];
22 for(var i=0;i<arr.length;i++){
23 var newArr= arr[i].split(","),
24 levelObjects=[];
25 for(var j=0;j<newArr.length;j++){
26 var o={};
27 o.value = newArr[j];
28 o.level = i+1;
29 levelObjects.push(o);
30 if(j===0 && i===0){
31 //设置头结点
32 head=o;
33 break;
34 }
35 if(j-1>=0)
36 //设置右边的子结点
37 lastLevelObjects[j-1].rightObject=o;
38 if(j<lastLevelObjects.length)
39 //设置左边的子结点
40 lastLevelObjects[j].leftObject=o;
41 }
42 //重置lastLevelObjects为对象(当前的level属性的值)数组
43 lastLevelObjects=levelObjects;
44 }
45 return head;
46 }
47 //递归遍历图找出求得最大值的路线
48 function trvaseGraph(start,currentValue){
49 //保证levelPath的长度小于当前结点的level属性值,避免多余的“脏”数据
50 while(levelPath.length>=parseInt(start.level)) levelPath.pop();
51
52 levelPath.push(start.value);
53
54 if(start.leftObject==null && start.rightObject==null){
55 //在当前遍历中遍历到最后一层子结点的value和值
56 currentValue +=parseInt(start.value);
57 if(max<currentValue){
58 var route="";
59
60 //重置max
61 max=currentValue;
62 for(var i=levelPath.length-2;i>=0;i--){
63 route=levelPath[i]+'-->'+route;
64 }
65 route+=levelPath[levelPath.length-1];
66 finalKeyPathStr="Path:"+route+" MaxValue:"+max;
67 }
68 return;
69 }
70 //在当前遍历中未遍历到最后一层子结点的value和值
71 currentValue+=parseInt(start.value);
72 if(start.leftObject!=null){
73 //遍历左边子结点
74 trvaseGraph(start.leftObject,currentValue);
75 }
76
77 if(start.rightObject!=null){
78 //遍历右边子结点
79 trvaseGraph(start.rightObject,currentValue);
80 }
81 }
82
83 })(window)
84
85 var dataArr =["188",
86 "188,112",
87 "105,105,194",
88 "142,166,191,129",
89 "171,172,134,127,127",
90 "131,152,160,162,165,134",
91 "102,167,102,180,125,153,126",
92 "111,122,131,188,136,125,190,109",
93 "168,160,188,126,164,175,181,128,163",
94 "114,148,121,111,162,102,151,182,134,186",
95 "126,102,166,183,161,174,159,187,113,198,159",
96 "191,143,196,186,156,103,112,124,200,140,183,124"];
97 console.log(ShortPathVal(dataArr)); View Code
潜入地图:
成功潜入!!!
DEMO:/
转载于:.html
本文标签: 腾讯
版权声明:本文标题:腾讯 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/IT/1693830894a244935.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论