C#顶点边
我在做这个任务时遇到了一个问题:如果n顶点图的顶点1(刺)与顶点2(尾巴)相连,顶点3(身体)与其他顶点(脚)相连,那么n顶点图就是蝎子。一些脚可能连接到其他脚。设计一个算法,确定给定的图形是否代表蝎子,并告诉哪条线是刺、尾巴、身体和触角。 这是我要读取的数据文件: 我想先找到刺,但我怎么能找到尾巴和身体的联系呢?我还必须使用递归 编辑: 好的,现在我已经发现每行中有多少“+”:C#顶点边,c#,algorithm,matrix,graph,adjacency-matrix,C#,Algorithm,Matrix,Graph,Adjacency Matrix,我在做这个任务时遇到了一个问题:如果n顶点图的顶点1(刺)与顶点2(尾巴)相连,顶点3(身体)与其他顶点(脚)相连,那么n顶点图就是蝎子。一些脚可能连接到其他脚。设计一个算法,确定给定的图形是否代表蝎子,并告诉哪条线是刺、尾巴、身体和触角。 这是我要读取的数据文件: 我想先找到刺,但我怎么能找到尾巴和身体的联系呢?我还必须使用递归 编辑: 好的,现在我已经发现每行中有多少“+”: int[] B = new int[100]; for (int i = 0; i < n;
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");
}
}
int[]B=新的int[100];
对于(int i=0;i=3)
{
控制台。WriteLine(“这是一只蝎子!”);
Console.WriteLine(“主体位于:“+i+”部分”);
}
}
通过递归,我试图找到路径连接。。。我该如何继续
static void Find(字符串[,]A,int n,int j)
{
对于(int i=0;i
所以,我给你一个如何解决这个问题的想法。我得到了他的帮助。你应该看看那里。在那个网站上有一个提示
我的方法和他们的略有不同
从抽象的角度来看,你是在问,从一个邻接矩阵,确定给定的点是否像这个图像(又名蝎子)。(摘自该网站)
现在,邻接矩阵如何转化为蝎子?让我们看看你的例子。
我手工画了邻接矩阵和图表。我希望它不太难理解
现在怎么解决呢?这里计算每个节点的阶数。你可以通过这里的邻接矩阵来计算。(度表示一个节点连接到的节点数,例如,对于我在那里绘制的图,度1为1,度0为2,依此类推……)
首先,您可以在这里找到所有节点的阶数(节点表示顶点,反之亦然)
所以,刺应该是一级的。现在有问题了,我会再谈的。但是现在让我们不考虑它。< /P>
尾巴应该是2度。它会和毒刺相连。因此,找到与sting连接的一个节点,就完成了。那是尾巴
与尾巴相连的节点(除刺外)是身体
主体的阶数将大于等于2。所以,如果有一个顶点有那么大的度数,那就是物体。与之相连的节点是feets
现在你可能会说,触角是2度的,那么为什么不是尾巴呢?因为它们没有连接到sting(您前面已经计算过)
你也可能会说,脚是1度的,为什么不刺呢?因为它连接到某个阶数大于2的节点,而该节点不能连接(因为尾部阶数为2)
<>这一切都很好,但是考虑一个问题,如果图是这样的,
1-0-3-4
那刺是什么,脚是什么?我的答案是两者都有。1和4都可以是腿或刺
我希望你能理解我说的话
必要时对图像进行澄清:
你说,有a+就有边。请注意第1行的+和第0行的3。因此,0连接到1和4。我就这样把它们连接起来了。并且连接是双向的。你们可以从邻接矩阵中看到这一点。所以,我给你们一个如何解决这个问题的想法。我得到了他的帮助。你应该看看那里。在那个网站上有一个提示 我的方法和他们的略有不同 从抽象的角度来看,你是在问,从一个邻接矩阵,确定给定的点是否像这个图像(又名蝎子)。(摘自该网站) 现在,邻接矩阵如何转化为蝎子?让我们看看你的例子。 我手工画了邻接矩阵和图表。我希望它不太难理解 现在怎么解决呢?这里计算每个节点的阶数。你可以通过这里的邻接矩阵来计算。(度表示一个节点连接到的节点数,例如,对于我在那里绘制的图,度1为1,度0为2,依此类推……) 首先,您可以在这里找到所有节点的阶数(节点表示顶点,反之亦然) 所以,刺应该是一级的。现在有问题了,我会再谈的。但是现在让我们不考虑它。< /P> 尾巴应该是2度。它会和毒刺相连。因此,找到与sting连接的一个节点,就完成了。那是尾巴 与尾巴相连的节点(除刺外)是身体 主体的阶数将大于等于2。所以,如果有一个顶点有那么大的度数,那就是物体。与之相连的节点是feets 现在你可能会说,触角是2度的,那么为什么不是尾巴呢?因为它们没有连接到sting(您前面已经计算过) 你也可能会说,脚是1度的,为什么不刺呢?因为它连接到某个阶数大于2的节点,而该节点不能连接(因为尾部阶数为2) <>这一切都很好,但是考虑一个问题,如果图是这样的,
1-0-3-4
那刺是什么,脚是什么?我的答案是两者都有。1和4都可以是腿或刺
我希望你能理解我说的话
必要时对图像进行澄清:
你说有a+就有a
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);
}
}
}