【发布时间】:2016-06-04 08:47:57
【问题描述】:
我在完成这项任务时遇到了问题:如果一个 n 顶点图有一个顶点 1(刺)连接到一个顶点 2(尾部)连接一个顶点 3(身体)连接到另一个顶点,那么它就是一个蝎子顶点(脚)。一些脚可能连接到其他脚。设计一个算法来判断给定的图画是否代表一只蝎子,并判断哪条线是刺、尾巴、身体和脚。 这是我要读取的数据文件: (+) is where is edge and (-) where are no edges
我试图先找到刺痛,但基本上我如何才能搜索与尾巴和身体的联系? 我也必须使用递归 编辑: 好的,现在我发现每行中有多少“+”:
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);
}
}
}
【问题讨论】:
-
据我了解,您只需找到所有长度为 3 的路径,过滤那些与前两个顶点没有其他连接但与后两个顶点至少有两个连接的路径。邻接矩阵(您实际拥有的)multiplication 将允许清除许多错误的起始顶点(只需将其乘以两次并从具有一个 3 长度路径的“顶点”开始)。
-
这里的*是什么意思?微不足道吗?还有,你提供的样品,是蝎子吗?或者你必须找出答案?
-
@S_kar 是的,这无关紧要
标签: c# algorithm matrix graph adjacency-matrix