我正在尝试生成一个图形,该图形使用起点和dictionary
逐一添加点,在执行路径查找算法之前,字典为dictionary<int, int>
的形式。我想基于分别由int
和caveConnections
组成的两个connectionWeights
值列表来填充字典。该点可以具有多个连接,因此需要循环来添加值。
添加到字典中的第一个int
正在从文本文件中逐行读取。第二个int
值将从stack
中添加。
我不确定如何实现这一目标。我正在尝试实现的输出如下;
Graph g = new Graph();
g.add_vertex(1, new Dictionary<int, int>() {{2, 7}, {3, 8}});
g.add_vertex(2, new Dictionary<int, int>() {{1, 7}, {6, 2}});
g.add_vertex(3, new Dictionary<int, int>() {{1, 8}, {6, 6}, {7, 4}});
g.add_vertex(4, new Dictionary<int, int>() {{6, 8}});
g.add_vertex(5, new Dictionary<int, int>() {{8, 1}});
g.add_vertex(6, new Dictionary<int, int>() {{2, 2}, {3, 6}, {4, 8}, {7, 9}, {8, 3}});
g.add_vertex(7, new Dictionary<int, int>() {{3, 4}, {6, 9}});
g.add_vertex(8, new Dictionary<int, int>() {{5, 1}, {6, 3}});
文本文件内容;
4
4 5
5 6 7
1 5 6
2 3 4
3 4
3
堆栈构建如下;
Stack<String> connectionStack = new Stack<string>();
List<int> connectionData = new List<int>();
foreach (String s in caveConnections)
{
connectionStack.Push(s);
}
堆栈内容;
2,8,3,2,14,5,7,6,11,2,11,6,14,1
任何建议将不胜感激。
答案 0 :(得分:1)
string[] lines = File.ReadAllLines("ints.txt");
Graph g = new Graph();
for(int i =0; i< lines.Liength; i++)
{
string[] ints = lines[i].Split(' ');
Dictionary<int, int> dict = new Dictionary<int, int>();
for(int j = 0; j<ints.Length;j++)
if(!dict.ContainsKey(int.Parse(ints[i].Trim())))
dict.Add(int.Parse(ints[i].Trim()), int.Parse(connectionStack.Pop()));
g.add_vertex(i+1, dict);
}
当然,如果堆栈计数少于文本文件中的整数,则将出现异常。