网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > C# > 正文
匈牙利算法(C#)实现
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/14
下载{$ArticleTitle}原创论文样式
t indexofy)
{
OldIndexOfV2.Add(indexofy);
SequencedIndexOfV2[indexofy] = 1;
}

void ExpandGivenMatch()
{
int V1index = (int)OldIndexOfV1.ToArray(typeof(int));
int V2index = (int)OldIndexOfV2.ToArray(typeof(int));

for (int i = 0; i < V1index.Length - 1; i++)
{
GivenMatch[V1index[i], V2index[i]] = 1;
GivenMatch[V1index[i + 1], V2index[i]] = 0;
}// for i
if (V2index.Length == V1index.Length)
{
int i = V2index.Length - 1;
GivenMatch[V1index[i], V2index[i]] = 1;
}
}

void MaxMatching()
{
bool boolfull = false;
bool boolhaveexpanded = true;
bool booladdx = true;
while (boolhaveexpanded == true)
{
boolhaveexpanded = false;
booladdx = true;
boolfull = boolDataFull();
if (boolfull == true)
{
return;
}
else
{
for (int i = 0; i < cn; i++)
{
SequencedIndexOfV2[i] = 0;
this.TV1[i] = 0;
}
OldIndexOfV1.Clear();
OldIndexOfV2.Clear();

int notfullindexofx = SearchNotFullIndexOfX();
ExpandOldIndexOfV1(notfullindexofx);

while (booladdx == true)
{
booladdx = false;
bool boolequal = IsTV1EqualV2(this.TV1, SequencedIndexOfV2);
if (boolequal == true)
{
return;
}
else
{
int iy = InTV1NotInV2(this.TV1, SequencedIndexOfV2);
ExpandOldIndexOfV2(iy);

int ix = IndexOfXMakeYFull(iy);
if (ix != -1)
{
ExpandOldIndexOfV1(ix);
booladdx = true;
boolhaveexpanded = true;
}
else
{
ExpandGivenMatch();
boolhaveexpanded = true;
//break;
}
}
}//while booladdx == true
}//if boolfull == true
}//while boolhaveexpanded == true
//showdata();
}

 

#region Check the Array''s values
void Checked()
{
if (OriginData.GetLength(0) != GivenMatch.GetLength(0))
{
throw new Exception("The first dimension of " + OriginData +
" should be equal to the first dinesion of" + GivenMatch);
}
if (OriginData.GetLength(1) != GivenMatch.GetLength(1))
{
throw new Exception("The first dimension of " + OriginData +
" should be equal to the first dinesion of" + GivenMatch);
}
for (int i = 0; i < OriginData.GetLength(0); i++)
{
for (int j = 0; j < OriginData.GetLength(1); j++)
{
if (OriginData[i, j] > 1 || OriginData[i, j] < -1)
{
throw new Exception("Each value of " + OriginData +
" must be -1 or 0 or 1 ");
}
if (GivenMatch[i, j] > 1 || GivenMatch[i, j] < -1)
{
throw new Exception("Each value of " + GivenMatch +
" must be -1 or 0 or 1 ");
}
}
}
}

#endregion
public int[,] resultArray()
{
Checked();
MaxMatching();
return GivenMatch;
}
}
}


 

  • 上一篇资讯: 动态加载控件
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号