[英]C# Vertex Edges
我在执行此任务时遇到了一个问题:如果n顶点图的顶点1(to)连接到顶点,顶点2(尾部)连接顶点3(身体),而顶点3连接到其他顶点(即英尺)。 某些脚可能会连接到其他脚。 设计一种算法,该算法确定给定的图形是否代表蝎子,并判断出哪条线是ing,尾巴,身体和脚。 这是我要读取的数据文件: (+)是边,(-)是没有边
我想先找到the,但是基本上我怎么能找到与尾巴和身体的联系? 我也必须使用递归 编辑:好的,现在我发现每行有多少个“ +”:
int[] B = new int[100];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
int HowMuch = Regex.Matches(A[i,j], @"\+").Count;
Saving[i] += HowMuch;
}
if(Saving[i]>=3)
{
Console.WriteLine("It's a scorpion!");
Console.WriteLine("The body is in: " + i + " part");
}
}
通过递归,我试图找到路径连接...我应该如何继续?
static void Find(string[,] A, int n, int j)
{
for (int i = 0; i < n; i++)
{
if(A[i,j]=="+")
{
j = i;
Find(A, n, j);
}
}
}
所以,我给你一个解决方法的想法。 我把帮助从这个 。 你应该去那里看看。 该网站上有一个提示。
我的方法与他们的方法略有不同。
从抽象的角度来看,您要从邻接矩阵中确定给定的点是否像此图像(又称蝎子)。 (摘自该网站)
现在,邻接矩阵如何转换为蝎子? 让我们看看您的示例。 我用手绘制了邻接矩阵和图。 我希望它不太难理解。
现在如何解决呢? 您可以在此处计算每个节点的度数。 您可以在此处从邻接矩阵中进行计算。 (度数表示一个节点连接的节点数,例如,对于在此绘制的图i,度数1为1,度数0为2,依此类推...)
首先,您在这里找到所有节点的度数(节点表示顶点,反之亦然)。
因此,刺痛应该是一级学位。 现在有一个问题,我将重新解决。 但是现在暂时不要考虑它。
尾巴将具有2度。它将与st连接。 因此,您找到了一个与connected连接的节点,然后就完成了。 那是尾巴。
与拖尾连接的节点(除了ing)是身体。
物体的度数> =2。因此,如果某个顶点具有该度数,则可以肯定的是物体。 与之相连的节点就是脚。
现在您可能会说,脚的高度为2,那么为什么不尾巴呢? 因为它们没有连接到st。(您之前已经计算过)
您可能还会说,脚的高度为1,为什么不刺痛? 因为它连接到某个度数大于2的节点,而不能大于(因为尾部的度数为2)
现在一切都很好,但是考虑一个问题,如果图表是这样的,
1-0-3-4
那么刺痛和脚感会怎样呢? 我的回答都是。 1和4都可以是腿或st。
我希望你能理解我说的话。
必要时在图像上进行澄清:您说过,有+的地方是边缘。 注意第0行的1和3上的+。因此,0连接到1和4。我已经像这样将它们连接起来。 并且连接是双向的。 您可以从邻接矩阵中看到这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.