作者yauhh (哟)
看板C_Sharp
标题Re: [问题] minimum spanning tree
时间Fri Apr 16 23:33:42 2010
※ 引述《dreamday1023 (也许我就是我,好好爱自己)》之铭言:
: 如上程式码
: step1
: 我想用 mouseclick的方式 在我的form上直接划点
: 并储存成x[m],y[m] 最後再算出L[i,j](及两点间的距离)
: <<由上程式码 应该是已经完成了>>
:
: step2
: 将算好的L[i,j]放到我的buttomclick内 去进行MST的运算
: <<即为我目前卡住的问题>>
:
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc)
: ◆ From: 140.114.231.33
: → james732:你只要把int [,]L移到这个函式外 就可让buttonclk取用 04/16 22:06
: 推 yauhh:你的图定义好特别,是直接打点,就内定任二点之间有连线是吗? 04/16 22:31
: → dreamday1023:是的 我是这样想的 04/16 22:54
既然如此,程式大概是像这样子:
class Form1 : Form {
ArrayList V, E; //要在起始函数中建构实体
...
void buttonClick(object sender, EventArgs e) {
int[] newNode = new int[2] {e.X, e.Y};
int[] nearNode = newNode;
object[] newLink;
foreach (int[] n in V) {
if (distance(n, newNode) < distance(nearNode, newNode)
&& distance(nearNode, newNode) != 0) {
nearNode = n;
}
}
newLink = new object[2] {nearNode, newNode};
V.append(newNode);
E.append(newLink);
}
}
等按钮点完之後, V E 就是储存的点和线了.
以上程式仅供演算法参考. 语法没有完全经过C#合法检查,请勿纠正语法.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.160.111.14