gpt4 book ai didi

c# - 从 C# 中的文本文件中读取矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 22:44:46 25 4
gpt4 key购买 nike

我需要读取一个包含矩阵的文本文件,而不是像我那样将它放在代码中,但我试过了,但我无法弄明白。我在文本文件中有矩阵,就像在代码中一样,但没有逗号

这是一个读取矩阵以找到最短路径的dijkstra程序,谢谢

{

private static int MinimumDistance(int[] distance, bool[] shortestPathTreeSet, int verticesCount)
{
int min = int.MaxValue;
int minIndex = 0;

for (int v = 0; v < verticesCount; ++v)
{
if (shortestPathTreeSet[v] == false && distance[v] <= min)
{
min = distance[v];
minIndex = v;
}
}

return minIndex;
}

private static void Print(int[] distance, int verticesCount)
{
Console.WriteLine("Vertex Distance from source");

for (int i = 0; i < verticesCount; ++i)
Console.WriteLine("{0}\t {1}", i, distance[i]);
}

public static void DijkstraAlgo(int[,] graph, int source, int verticesCount)
{
int[] distance = new int[verticesCount];
bool[] shortestPathTreeSet = new bool[verticesCount];

for (int i = 0; i < verticesCount; ++i)
{
distance[i] = int.MaxValue;
shortestPathTreeSet[i] = false;
}

distance[source] = 0;

for (int count = 0; count < verticesCount - 1; ++count)
{
int u = MinimumDistance(distance, shortestPathTreeSet, verticesCount);
shortestPathTreeSet[u] = true;

for (int v = 0; v < verticesCount; ++v)
if (!shortestPathTreeSet[v] && Convert.ToBoolean(graph[u, v]) && distance[u] != int.MaxValue && distance[u] + graph[u, v] < distance[v])
distance[v] = distance[u] + graph[u, v];
}

Print(distance, verticesCount);
}

static void Main(string[] args)
{
int[,] graph = {
{ 0, 6, 0, 0, 0, 0, 0, 9, 0 },
{ 6, 0, 9, 0, 0, 0, 0, 11, 0 },
{ 0, 9, 0, 5, 0, 6, 0, 0, 2 },
{ 0, 0, 5, 0, 9, 16, 0, 0, 0 },
{ 0, 0, 0, 9, 0, 10, 0, 0, 0 },
{ 0, 0, 6, 0, 10, 0, 2, 0, 0 },
{ 0, 0, 0, 16, 0, 2, 0, 1, 6 },
{ 9, 11, 0, 0, 0, 0, 1, 0, 5 },
{ 0, 0, 2, 0, 0, 0, 6, 5, 0 }
};

DijkstraAlgo(graph, 0, 9);
}
}

这是文本文件矩阵:

0 6 8 12 0 0 0 0 0 0
6 0 0 5 0 0 0 0 0 0
8 0 0 1 0 0 0 0 0 0
12 5 1 0 9 10 14 16 15 0
0 0 0 9 0 0 3 0 0 0
0 0 0 10 0 0 0 0 13 0
0 0 0 14 3 0 0 3 0 6
0 0 0 16 0 0 3 0 1 4
0 0 0 15 0 13 0 1 0 7
0 0 0 0 0 0 6 4 7 0

最佳答案

如果我理解正确的话。

您正在寻求一种从文件中读取空格分隔的 int 并将其转换为 int 的多维(正方形)数组的方法。例如 int[,]

你可以这样做

给定

public static class Extensions
{
public static T[,] ToRectangularArray<T>(this IReadOnlyList<T[]> arrays)
{
var ret = new T[arrays.Count, arrays[0].Length];
for (var i = 0; i < arrays.Count; i++)
for (var j = 0; j < arrays[0].Length; j++)
ret[i, j] = arrays[i][j];
return ret;
}
}

用法

var someArray = File.ReadAllLines("myAwesomeFile")   // read from File
.Select(x => x.Split(' ').Select(int.Parse).ToArray()) // split line into array of int
.ToArray() // all to array
.ToRectangularArray(); // send to multidimensional array

关于c# - 从 C# 中的文本文件中读取矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50521266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com